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

डायनेमिक पिवट के लिए कॉलम सॉर्ट करें

आप ORDER BY . जोड़कर डायनेमिक पिवट क्वेरी में फ़ील्ड के क्रम को एडजस्ट कर सकते हैं जब आप अपना @cols . सेट करते हैं स्ट्रिंग:

select @cols = STUFF((SELECT distinct ',' + QUOTENAME('Month'+cast(DATEPART(m, [Inv Date]) as varchar(2))) 
                    from #TempTable
                    ORDER BY ....
            FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') ,1,1,'')

अपडेट:चूक गया DISTINCT सबसे पहले, DISTINCT . का उपयोग करते समय आपको एक सबक्वेरी का उपयोग करना होगा और फिर ORDER BY :

SELECT @cols = STUFF((SELECT ',' +   QUOTENAME(ColName) 
                    FROM (SELECT DISTINCT 'Month'+cast(DATEPART(m, [Inv Date]) as varchar(2)) ColName
                          FROM #TempTable
                          )sub
                    ORDER BY ColName
                    FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') ,1,1,'')

यदि आप केवल कॉलम नाम का उपयोग नहीं कर सकते हैं, तो आपको अपनी सबक्वेरी में एक 'सॉर्ट' फ़ील्ड जोड़ने की आवश्यकता हो सकती है, और जब तक वे DISTINCT को बाधित नहीं करते हैं, तब तक आप सबक्वेरी में कोई भी फ़ील्ड जोड़ सकते हैं। सूची। उदाहरण के लिए:

SELECT @cols = STUFF((SELECT ',' +   QUOTENAME(ColName) 
                    FROM (SELECT DISTINCT 'Month'+cast(DATEPART(m, [Inv Date]) as varchar(2)) ColName
                                          ,CASE WHEN field = 'something' THEN 1
                                                WHEN field = 'something else' THEN 2
                                                ELSE 3
                                           END as Sort
                                          ,Cust_ID
                          FROM #TempTable
                          )sub
                    ORDER BY Sort,Cust_ID
                    FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') ,1,1,'')



  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. वस्तु नहीं मिल सकती क्योंकि वह मौजूद नहीं है या आपके पास अनुमति नहीं है। SQL सर्वर में त्रुटि

  4. IS NULL या LIKE> ऑपरेटर का उपयोग करने के अलावा, टेक्स्ट, ntext और छवि डेटा> प्रकारों की तुलना या सॉर्ट नहीं किया जा सकता है

  5. क्या मुझे SQL सर्वर में थोड़ा सा फ़ील्ड इंडेक्स करना चाहिए?