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

SQL पिवट - पंक्तियों को कॉलम में बदलने का तरीका जानें

रिलेशनल डेटाबेस टेबल के रूप में भारी मात्रा में डेटा स्टोर करते हैं। इन तालिकाओं में कितनी भी पंक्तियाँ और स्तंभ हो सकते हैं। लेकिन, क्या होगा यदि आपको पंक्ति-स्तरीय डेटा को स्तंभ डेटा में बदलना पड़े? खैर, 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 पिवट पर इस लेख के टिप्पणी अनुभाग में इसका उल्लेख करें और मैं आपसे संपर्क करूंगा।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. IRI कार्यक्षेत्र से दूरस्थ नौकरियां कैसे चलाएं

  2. दीवारे तोड़ दो! अपने डेटा को अनसिलो कैसे करें

  3. एसक्यूएल में टीसीएल कमांड

  4. SQL कथन में चयन करें

  5. डेटा फ़ाइलों को स्टेटिस्टिका के साथ मर्ज करना, भाग 1