रिलेशनल डेटाबेस टेबल के रूप में भारी मात्रा में डेटा स्टोर करते हैं। इन तालिकाओं में कितनी भी पंक्तियाँ और स्तंभ हो सकते हैं। लेकिन, क्या होगा यदि आपको पंक्ति-स्तरीय डेटा को स्तंभ डेटा में बदलना पड़े? खैर, SQL Pivot पर इस लेख में, मैं आपको दिखाऊंगा कि आप SQL सर्वर में पंक्तियों को एक कॉलम में कैसे परिवर्तित कर सकते हैं।
निम्न विषयों को इस लेख में शामिल किया जाएगा:
- एसक्यूएल में PIVOT क्या है?
- वाक्यविन्यास
- उदाहरण
- पिवट क्लॉज का कार्य करना
- एसक्यूएल UNPIVOT
SQL में PIVOT क्या है?
PIVOT का प्रयोग टेबल-वैल्यू को घुमाने के लिए सिंगल कॉलम के यूनिक वैल्यू को मल्टीपल कॉलम में बदलने के लिए किया जाता है। इसका उपयोग पंक्तियों को स्तंभ मानों में घुमाने के लिए किया जाता है और शेष स्तंभ मानों पर आवश्यक होने पर एकत्रीकरण चलाता है।
UNPIVOT, दूसरी ओर, विपरीत कार्यों को करने के लिए प्रयोग किया जाता है। इसलिए, इसका उपयोग किसी विशिष्ट तालिका के स्तंभों को स्तंभ मानों में बदलने के लिए किया जाता है।
इस लेख में आगे बढ़ते हुए, आइए हम SQL Pivot के सिंटैक्स को समझते हैं।
वाक्यविन्यास:
SELECT NonPivoted ColumnName, [First Pivoted ColumnName] AS ColumnName, [Second Pivoted ColumnName] AS ColumnName, [Third Pivoted ColumnName] AS ColumnName, ... [Last Pivoted ColumnName] AS ColumnName FROM (SELECT query which produces the data) AS [alias for the initial query] PIVOT ( [AggregationFunction](ColumName) FOR [ColumnName of the column whose values will become column headers] IN ( [First Pivoted ColumnName], [Second Pivoted ColumnName], [Third Pivoted ColumnName] ... [last pivoted column]) ) AS [alias for the Pivot Table];
यहां, आप ORDER BY क्लॉज का उपयोग मानों को आरोही या अवरोही क्रम में क्रमबद्ध करने के लिए भी कर सकते हैं। अब जब आप जानते हैं कि SQL में PIVOT क्या है और इसका मूल सिंटैक्स क्या है, तो आइए आगे बढ़ते हैं और देखते हैं कि इसका उपयोग कैसे किया जाता है।
उदाहरण
आपकी बेहतर समझ के लिए, मैं आपको सभी उदाहरणों को समझाने के लिए निम्न तालिका पर विचार करूंगा।
आपूर्तिकर्ता तालिका:
आपूर्तिकर्ता आईडी | डेसोफ निर्माण | लागत | CustomerID | खरीदारी आईडी |
1 | 12 | 1230 | 11 | P1 |
2 | 21 | 1543 | 22 | P2 |
3 | 32 | 2345 | 11 | P3 |
4 | 14 | 8765 | 22 | P1 |
5 | 42 | 3452 | 33 | P3 |
6 | 31 | 5431 | 33 | P1 |
7 | 41 | 2342 | 11 | P2 |
8 | 54 | 3654 | 22 | P2 |
9 | 33 | 1234 | 11 | P3 |
10 | 56 | 6832 | 33 | P2 |
आइए प्रत्येक ग्राहक द्वारा खर्च की गई औसत लागत को पुनः प्राप्त करने के लिए एक सरल प्रश्न लिखें।
SELECT CustomerID, AVG(Cost) AS AverageCostofCustomer FROM Suppliers GROUP BY CustomerID;
आउटपुट:
CustomerID | औसतकॉस्ट ग्राहक |
11 | 1787.75 |
22 | 4654 |
33 | 5238.33 |
अब, मान लें कि हम उपरोक्त तालिका को पिवट करना चाहते हैं। यहां, CustomerID कॉलम मान कॉलम हेडर बन जाएंगे।
-- Create Pivot table with one row and three columns SELECT 'AverageCostofCustomer' AS Cost_According_To_Customers, [11], [22], [33] FROM (SELECT CustomerID, Cost FROM Suppliers) AS SourceTable PIVOT ( AVG(Cost) FOR CustomerID IN ([11], [22], [33]) ) AS PivotTable;
आउटपुट:
Cost_According_To_Customers | 11 | 22 | 33 |
AverageCostofCustomer | 1787.75 | 4654 | 5238.33 |
नोट: जब आप PIVOT के साथ समग्र कार्यों का उपयोग करते हैं, तो एकत्रीकरण की गणना करते समय शून्य मानों पर विचार नहीं किया जाता है।
खैर, यह एक बुनियादी उदाहरण था, लेकिन आइए अब समझते हैं कि PIVOT क्लॉज कैसे काम करता है।
पिवट क्लॉज का कार्य करना
जैसा कि आप ऊपर देख सकते हैं, PIVOT TABLE बनाने के लिए, आपको नीचे दिए गए चरणों का पालन करना होगा:
- पिवट करने के लिए कॉलम चुनें
- फिर, एक स्रोत तालिका चुनें।
- पिवट ऑपरेटर लागू करें, और फिर समग्र कार्यों का उपयोग करें।
- पिवट मानों का उल्लेख करें।
पिवट करने के लिए कॉलम चुनें
शुरुआत में, हमें अपने परिणामों में शामिल किए जाने वाले क्षेत्रों को निर्दिष्ट करना होगा। हमारे उदाहरण में, मैंने पिवट टेबल में एवरेजकॉस्टॉफ कस्टमर कॉलम पर विचार किया। फिर हमने कॉलम हेडर 11, 22 और 33 के साथ तीन अन्य कॉलम बनाए। उदाहरण-
SELECT 'AverageCostofCustomer' AS Cost_According_To_Customers, [11], [22], [33]चुनें
स्रोत तालिका चुनें
अगला, आपको सेलेक्ट स्टेटमेंट निर्दिष्ट करना होगा जो पिवट टेबल के लिए सोर्स डेटा लौटाएगा। हमारे उदाहरण में, हम आपूर्तिकर्ता तालिका से CustomerID और लागत लौटा रहे हैं।
स्रोत तालिका के रूप में(SELECT CustomerID, Cost FROM Suppliers) AS SourceTable
पिवट ऑपरेटर लागू करें, और फिर समग्र कार्यों का उपयोग करें
अगला, आपको पिवट टेबल बनाते समय उपयोग किए जाने वाले एग्रीगेट फ़ंक्शन को निर्दिष्ट करना होगा। हमारे उदाहरण में, मैंने औसत लागत की गणना करने के लिए AVG फ़ंक्शन का उपयोग किया है।
PIVOT ( AVG(Cost)
पिवट मानों का उल्लेख करें
अंत में, आपको उन मानों का उल्लेख करना होगा जिन्हें परिणामी पिवट तालिका में शामिल किया जाना है। इन मानों का उपयोग पिवट तालिका में स्तंभ शीर्षकों के रूप में किया जाएगा।
FOR CustomerID IN ([11], [22], [33]) ) AS PivotTable;
इस तरह PIVOT ऑपरेटर काम करते हैं। SQL PIVOT पर इस लेख में आगे बढ़ते हुए, आइए समझते हैं कि यह SQL UNPIVOT से कितना अलग है।
एसक्यूएल UNPIVOT
SQL UNPIVOT ऑपरेटर का उपयोग PIVOT के विपरीत ऑपरेशन करने के लिए किया जाता है। इसका उपयोग कॉलम डेटा को रो-लेवल डेटा में घुमाने के लिए किया जाता है। UNPIVOT का सिंटैक्स, PIVOT के समान है। अंतर केवल इतना है कि आपको SQL कीवर्ड “UNPIVOT” . का उपयोग करना होगा ।
उदाहरण:
आइए हम प्रदायक आईडी, एएए, बीबीबी, और सीसीसी कॉलम के साथ एक टेबल बनाएं। साथ ही, कुछ मान डालें.
CREATE TABLE sampletable (SupplierID int, AAA int, BBB int, CCC int); GO INSERT INTO sampletable VALUES (1,3,5,6); INSERT INTO sampletable VALUES (2,9,2,8); INSERT INTO sampletable VALUES (3,8,1,7); GO
आउटपुट:
आपूर्तिकर्ता आईडी | एएए | BBB | सीसीसी |
1 | 3 | 5 | 6 |
2 | 9 | 2 | 8 |
3 | 8 | 1 | 7 |
अब, हम कहते हैं, हम टेबल को अनपिवट करना चाहते हैं। ऐसा करने के लिए, आप निम्न कोड का उल्लेख कर सकते हैं:
SELECT SupplierID, Customers, Products FROM (SELECT SupplierD, AAA, BBB, CCC FROM sampletable) p UNPIVOT (Products FOR Customers IN (AAA, BBB, CCC) )AS example; GO
आपूर्तिकर्ता आईडी | ग्राहक | उत्पाद |
1 | AAA | 3 |
1 | BBB | 5 |
1 | CCC | 6 |
2 | AAA | 9 |
2 | BBB | 2 |
2 | CCC | 8 |
3 | AAA | 8 |
3 | BBB | 1 |
3 | CCC | 7 |
इस तरह आप SQL PIVOT और UNPIVOT का उपयोग कर सकते हैं। इसी के साथ हम इस लेख को समाप्त करते हैं। मुझे आशा है कि आप समझ गए होंगे कि SQL का उपयोग कैसे किया जाता है। यदि आप MySQL के बारे में अधिक जानना चाहते हैं और इस ओपन-सोर्स रिलेशनल डेटाबेस को जानना चाहते हैं, तो हमारा MySQL DBA प्रमाणन प्रशिक्षण देखें। जो प्रशिक्षक के नेतृत्व वाले लाइव प्रशिक्षण और वास्तविक जीवन परियोजना अनुभव के साथ आता है। यह प्रशिक्षण आपको MySQL को गहराई से समझने और विषय पर महारत हासिल करने में मदद करेगा।
हमारे लिए एक प्रश्न है? कृपया SQL पिवट पर इस लेख के टिप्पणी अनुभाग में इसका उल्लेख करें और मैं आपसे संपर्क करूंगा।