पिवट क्वेरी की व्याख्या
FROM
(SELECT OtherID, Val, amount
FROM @randomTable) p
ये स्तंभ हैं जो पिवट के लिए "आधार डेटा" बन जाते हैं। उन स्तंभों को शामिल न करें जो कुछ नहीं करते हैं। जैसे आप गैर-ग्रुप बाय कॉलम को सेलेक्ट क्लॉज में नहीं डालते हैं, वैसे ही आप पिवोट स्रोत में अप्रयुक्त कॉलम को सूचीबद्ध नहीं करते हैं।
PIVOT
(
max(amount)
FOR Val IN (Val1, Val2, Val3, Val4, Val5)
) AS PivotTable;
यह भाग कहता है कि आप "Val5" के माध्यम से "Val1" नाम के 5 नए कॉलम बना रहे हैं। ये कॉलम नाम मानों का प्रतिनिधित्व करते हैं कॉलम वैल में। तो यह उम्मीद की जाती है कि आपकी तालिका में कुछ इस तरह होगा
otherID Val amount
1 Val1 1
2 Val2 2
1 Val3 3
1 Val1 5
(etc) (this column contains one of Val1 - Val5, or null)
तो अब आपके पास 5 नए कॉलम हैं जो पहले मौजूद नहीं थे। कॉलम में क्या जाता है?
- कोई भी स्तंभ जो OUTPUT में प्रकट होता है जो एक पिवोटेड कॉलम नहीं है, एक "ग्रुप बाय" कॉलम है।
- समग्र फ़ंक्शन वह है जो सभी डेटा को उस सेल में एकत्रित करता है जो GROUP BY कॉलम और PIVOTED कॉलम के बीच क्रॉस है।
इसलिए, उदाहरण के लिए, उपरोक्त नमूना डेटा का उपयोग करते हुए, हमारे पास अन्य आईडी =1 और वैल =वैल 1 है। आउटपुट तालिका में, प्रत्येक (अन्य आईडी/वैल) संयोजन के लिए अधिकतम (राशि) के इस संयोजन का प्रतिनिधित्व करने वाला केवल एक सेल है
otherID Val1 Val2 Val3 Val4 Val5
1 <x> ... ... ... ...
(etc)
<x>
marked चिह्नित सेल के लिए , केवल एक मान की अनुमति है, इसलिए <x>
एक से अधिक amount
नहीं हो सकते हैं मूल्य। यही कारण है कि हमें इसे एकत्र करने की आवश्यकता है, इस मामले में MAX(amount)
. का उपयोग करके . तो वास्तव में, आउटपुट इस तरह दिखता है
(unpivoted columns) (pivoted, creates "new" columns)
otherID | Val1 Val2 Val3 Val4 Val5
1 | MAX(amount) Max(amount) << cell value = aggregate function
(etc)
SELECT स्टेटमेंट वह है जो इन कॉलम को आउटपुट करता है
SELECT OtherID, Val1, Val2, Val3, Val4, Val5