Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

टी-एसक्यूएल ग्रुपिंग पंक्तियों को मैक्स लंबाई कॉलम से अलग-अलग पंक्तियों में (?)

SELECT A.akey, 
    (
        SELECT TOP 1 T1.text1
        FROM test1 T1
        WHERE T1.akey=A.akey AND LEN(T1.TEXT1) = MAX(LEN(A.text1))
    ) AS TEXT1,
    (
        SELECT TOP 1 T2.text2
        FROM test1 T2
        WHERE T2.akey=A.akey AND LEN(T2.TEXT2) = MAX(LEN(A.text2))
    ) AS TEXT2,
    (
        SELECT TOP 1 T3.text3
        FROM test1 T3
        WHERE T3.akey=A.akey AND LEN(T3.TEXT3) = MAX(LEN(A.text3))
    ) AS TEXT3
FROM TEST1 AS A
GROUP BY A.akey

मुझे अभी एहसास हुआ कि आपने कहा है कि आपके पास 32 कॉलम हैं। मुझे ऐसा करने का कोई अच्छा तरीका नहीं दिख रहा है, जब तक कि UNPIVOT आपको प्रत्येक टेक्स्ट* कॉलम के लिए अलग-अलग पंक्तियाँ (akey, textn) बनाने की अनुमति नहीं देता।

संपादित करें: हो सकता है कि मुझे आज इसे समाप्त करने का मौका न मिले, लेकिन UNPIVOT उपयोगी लग रहा है:

;
WITH COLUMNS AS
(
    SELECT akey, [Column], ColumnValue
    FROM
        (
            SELECT X.Akey, X.Text1, X.Text2, X.Text3
            FROM test1 X
        ) AS p
    UNPIVOT (ColumnValue FOR [Column] IN (Text1, Text2, Text3))
    AS UNPVT
)
SELECT *
FROM COLUMNS
ORDER BY akey,[Column], LEN(ColumnValue)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक ही प्रश्न में गणना और पंक्तियाँ प्राप्त करना

  2. शून्य को शून्य से बदलना

  3. ASP.Net में SQL इंजेक्शन को रोकना

  4. SQL का उपयोग करके अगले 5 वर्षों के लिए प्रत्येक माह उसी दिन का चयन करें?

  5. तालिका के रूप में उपयोगकर्ता परिभाषित प्रकार के लिए डिफ़ॉल्ट मान के लिए सिंटेक्स