आप 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,'')