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

कृपया PIVOT के भागों की व्याख्या करें

पिवट क्वेरी की व्याख्या

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SSIS के माध्यम से अपलोड करने से पहले डेटा सत्यापित करें

  2. एक इकाई फ़ील्ड को कैसे मैप करें जिसका नाम जेपीए में आरक्षित शब्द है

  3. फ़ील्ड मान का निर्धारण कैसे करें जो SQL सर्वर में (दशमलव, फ्लोट, इंट) में परिवर्तित नहीं हो सकता है

  4. प्राथमिक कुंजी को अनदेखा करते हुए SQL सर्वर में डुप्लिकेट पंक्तियों को हटाने के 3 तरीके

  5. एसएसआरएस में नल तिथियों का पता लगाना और खाली स्ट्रिंग दिखाना