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

एसक्यूएल सर्वर में एकाधिक कॉलम के साथ गतिशील पिवट तालिका

कृपया इसका उपयोग करें (यदि आपको Collation समस्या हो रही है, तो कृपया सभी 3 INT डेटाटाइप बदलें):

स्टेटिक कोड:

SELECT HEADER, [A_1],[B_2],[C_3],[D_4],[E_5],[F_6]        
FROM    
(SELECT DECK,HEADER, VALUE FROM REPORT   
    UNPIVOT      
    ( 
    VALUE FOR HEADER IN ([JIB_IN],[REV],[REV_INSIGHT],[JIB_OUT],[CREATION])  
    ) UNPIV
) SRC     
PIVOT    
(
    SUM(VALUE) 
    FOR DECK IN ([A_1],[B_2],[C_3],[D_4],[E_5],[F_6]) 
) PIV

डायनेमिक SQL का उपयोग करना:

DECLARE @COLSUNPIVOT AS NVARCHAR(MAX),
@QUERY  AS NVARCHAR(MAX),
@COLSPIVOT AS  NVARCHAR(MAX)

SELECT @COLSUNPIVOT = STUFF((SELECT ','+QUOTENAME(C.NAME)
FROM SYS.COLUMNS AS C
WHERE C.OBJECT_ID = OBJECT_ID('REPORT') AND C.NAME <> 'DECK'
FOR XML PATH('')), 1, 1, '')

SELECT @COLSPIVOT = STUFF((SELECT  ',' + QUOTENAME(DECK)
FROM REPORT T FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') ,1,1,'')

SET @QUERY 
= 'SELECT HEADER, '[email protected]+'
FROM
(
SELECT DECK,HEADER,VALUE FROM REPORT
UNPIVOT
(
  VALUE FOR HEADER IN ('[email protected]+')
) UNPIV
) SRC
PIVOT
(
SUM(VALUE)
FOR DECK IN ('[email protected]+')
) PIV'

EXEC(@QUERY)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पीडीओ sqlsrv:ड्राइवर नहीं मिल सका

  2. पंक्तियों से अल्पविराम सीमांकित स्ट्रिंग प्राप्त करें

  3. सिद्धांत 2:SQL Server 2008apm पर दिनांक समय स्तंभ अद्यतन नहीं कर सकता

  4. SQL सर्वर डेटाबेस में सभी चेक बाधाओं को कैसे अक्षम करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 87

  5. XML से SQL सर्वर डेटाटाइम में कनवर्ट करते समय मिलीसेकंड गलत है