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

गतिशील एसक्यूएल और कस्टम कॉलम नामों के साथ दो बार डेटा पिवट करना

दो बार पिवोट करने की आवश्यकता नहीं है।

उदाहरण

Declare @SQL varchar(max) = '
Select *
 From (
        Select A.Account
              ,B.*
         From  (Select Account
                      ,ProductID
                      ,Qty = sum(Qty)
                      ,RN=Row_Number() over (Partition By Account Order by ProductID)
                 From  YourTable
                 Group By Account,Productid
               ) A
         Cross Apply (values (''qty''+cast(RN as varchar(25)),cast(Qty as varchar(100)))
                            ,(''product''+cast(RN as varchar(25)),cast(productid as varchar(100)))
                     ) B (Item,Value)

      ) A
 Pivot (max([Value]) For [Item] in (' + Stuff((Select Distinct ','+QuoteName('product'+ColNr) 
                                                              +','+QuoteName('qty'+ColNr) 
                                               From (Select Distinct ColNr=cast(Row_Number() over (Partition By Account,ProductID Order by (Select NULL)) as varchar(25)) From  YourTable ) A  
                                               Order By 1 
                                               For XML Path('')),1,1,'')  + ') ) p'
Exec(@SQL);
Print @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. SQL सर्वर डेटाबेस में सिस्टम तालिकाओं की संख्या की गणना करने के 3 तरीके

  2. SQL 2008 भूगोल और ज्यामिति - किसका उपयोग करना है?

  3. पुनरारंभ किए बिना SQL सर्वर इंस्टेंस तक पहुंच बहाल करना

  4. SQL सर्वर में एक-से-एक संबंध को परिभाषित करना

  5. SQL सर्वर के sys.dm_sql_referenced_entities() का उदाहरण एक लिंक किए गए सर्वर को संदर्भित करने वाली इकाई को लौटाना