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

SQL सर्वर:पंक्तियों को स्तंभों में स्थानांतरित करें

इसे करने का एक तरीका अगर tagID . है सशर्त एकत्रीकरण का उपयोग करने के लिए मूल्यों को पहले से जाना जाता है

SELECT TimeSeconds,
       COALESCE(MAX(CASE WHEN TagID = 'A1' THEN Value END), 'n/a') A1,
       COALESCE(MAX(CASE WHEN TagID = 'A2' THEN Value END), 'n/a') A2,
       COALESCE(MAX(CASE WHEN TagID = 'A3' THEN Value END), 'n/a') A3,
       COALESCE(MAX(CASE WHEN TagID = 'A4' THEN Value END), 'n/a') A4
  FROM table1
 GROUP BY TimeSeconds
 

या यदि आप NULL के साथ ठीक हैं 'n/a' . के बजाय मान

SELECT TimeSeconds,
       MAX(CASE WHEN TagID = 'A1' THEN Value END) A1,
       MAX(CASE WHEN TagID = 'A2' THEN Value END) A2,
       MAX(CASE WHEN TagID = 'A3' THEN Value END) A3,
       MAX(CASE WHEN TagID = 'A4' THEN Value END) A4
  FROM table1
 GROUP BY TimeSeconds
 

या PIVOT . के साथ

SELECT TimeSeconds, A1, A2, A3, A4
  FROM
(
  SELECT TimeSeconds, TagID, Value
    FROM table1
) s
PIVOT
(
  MAX(Value) FOR TagID IN (A1, A2, A3, A4)
) p
 

आउटपुट (NULL . के साथ) रों):

टाइमसेकंड A1 A2 A3 A4 -----------------------------------------1378700244 3.75 NULL NULL1378700245 30.00 NULL NULL NULL1378700304 1.20 NULL NULL1378700305 NULL 56.00 NULL NULL1378700344 NULL 11.00 NULL NULL1378700345 NULL NULL 0.53 NULL1378700364 4.00 NULL NULL1378700365 14.50 NULL NULL1378700384 144.00 NULL NULL 

अगर आपको TagID को गिनना है गतिशील रूप से मान बाहर हो जाते हैं फिर गतिशील SQL का उपयोग करें

DECLARE @cols NVARCHAR(MAX), @sql NVARCHAR(MAX)

SET @cols = STUFF((SELECT DISTINCT ',' + QUOTENAME(TagID)
            FROM Table1
            ORDER BY 1
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)'),1,1,'')

SET @sql = 'SELECT TimeSeconds, ' + @cols + '
              FROM
            (
              SELECT TimeSeconds, TagID, Value
                FROM table1
            ) s
            PIVOT
            (
              MAX(Value) FOR TagID IN (' + @cols + ')
            ) p'

EXECUTE(@sql)
 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. चयन के लिए sp_executeSql निष्पादित करें ... # तालिका में लेकिन अस्थायी तालिका डेटा का चयन नहीं कर सकता

  2. टी-एसक्यूएल में खाली बयान

  3. एसक्यूएल में न्यूमेरिक मैपिंग टेबल से ट्री क्वेरी बनाएं (सेपरेटर फील्ड के साथ)

  4. SQL सर्वर:कॉलम में पंक्तियाँ

  5. क्या SQL सर्वर CLR एकीकरण कॉन्फ़िगरेशन फ़ाइलों का समर्थन करता है?