मुख्य सामग्री पर जाएं

SQL PIVOT का उपयोग कैसे करें

SQL PIVOT ऑपरेटर के साथ अपनी SQL कौशल बढ़ाएँ। SQL Server और Oracle में पिवट टेबल बनाने के लिए पंक्तियों को स्तंभों में बदलना सीखें।
अपडेट किया गया 25 सित॰ 2026  · 10 मि॰ पढ़ें

AI के साथ खोजें

ChatGPTClaudePerplexity

SQL Server और Oracle में PIVOT ऑपरेटर एक बेहद उपयोगी तकनीक है जो टेबल की पंक्तियों को स्तंभों में बदल देती है। PIVOT ऑपरेटर न केवल क्वेरी परिणामों की पठनीयता और व्याख्या में सुधार करता है, बल्कि समाकलनों का उपयोग करके पिवट टेबल या क्रॉस-टैब बनाने के माध्यम से डेटा रुझानों को समझना भी आसान बनाता है। ये पिवट टेबल खासकर उन रिपोर्टों में सहायक होती हैं जिन्हें अच्छी विज़ुअलाइज़ेशन की आवश्यकता होती है।

शुरू करने से पहले, यदि आपको लगता है कि आपकी SQL कौशल थोड़ी जंग खा गई हैं, तो मैं DataCamp के SQL Fundamentals स्किल ट्रैक की जाँच करने की सलाह देता/देती हूँ। हमारा SQL Fundamentals स्किल ट्रैक आपको डेटा को जॉइन और मैनिपुलेट करना, साथ ही सबक्वेरी और विंडो फ़ंक्शन का उपयोग करना सिखाएगा।

त्वरित उत्तर: SQL में Pivot कैसे करें

SQL Server का PIVOT ऑपरेटर डेटा को सारांशित करने में उपयोगी है क्योंकि यह पंक्तियों को स्तंभों में बदलने की अनुमति देता है। नीचे दिए गए city_sales टेबल पर विचार करें, जो पाँच प्रमुख अमेरिकी शहरों में किसी उत्पाद की सामान्य बिक्री दिखाता है।

SQL PIVOT का उपयोग करके बदलने के लिए टेबल का उदाहरण

SQL PIVOT का उपयोग करके बदले जाने वाले टेबल का उदाहरण। चित्र: लेखक।

हम निम्नलिखित क्वेरी का उपयोग करेंगे, जो PIVOT ऑपरेटर का उपयोग करती है, ताकि ऊपर दिए गए टेबल में एकाधिक स्तंभों को पिवट किया जा सके।

-- Select the columns for the output: city and sales data for 2019, 2020, and 2021
SELECT 
    city,
    [2019] AS Sales_2019,
    [2020] AS Sales_2020,
    [2021] AS Sales_2021
FROM
    (
        -- Subquery to select city, year, and sales from city_sales table
        SELECT city, year, sales 
        FROM city_sales
    ) AS src
PIVOT
(
    -- Pivot the sales data to have years as columns and sum the sales for each year
    SUM(sales)
    FOR year IN ([2019], [2020], [2021])
) AS pvt;

SQL PIVOT का उपयोग करके आउटपुट ट्रांसफॉर्मेशन का उदाहरण

SQL PIVOT का उपयोग करके आउटपुट ट्रांसफॉर्मेशन का उदाहरण। चित्र: लेखक।

SQL में PIVOT क्या है

पिवटिंग SQL में एक तकनीक है जिसका उपयोग सारणीबद्ध डेटा में पंक्तियों को स्तंभों में बदलने के लिए किया जाता है। SQL Server और Oracle में, पिवटिंग PIVOT ऑपरेटर के साथ की जाती है। नीचे दिखाया गया SQL PIVOT ऑपरेटर का सिंटैक्स तीन मुख्य भागों में बँटा होता है:

  • SELECT: SELECT स्टेटमेंट SQL पिवट टेबल में लौटाए जाने वाले स्तंभों को संदर्भित करता है।

  • सबक्वेरी: सबक्वेरी में वह डेटा स्रोत या टेबल होती है जिसे SQL पिवट टेबल में शामिल करना है।

  • PIVOT: PIVOT ऑपरेटर में वे समाकलन और फ़िल्टर होते हैं जिन्हें पिवट टेबल में लागू किया जाना है।

-- Select the non-pivoted column and the pivoted columns with aliases
SELECT 
    [non-pivoted column],               
    [first pivoted column] AS [column name],   
    [second pivoted column] AS [column name],  
    ...
FROM
    (
        -- Subquery to select the necessary columns from the source table
        SELECT [columns] 
        FROM [source_table]
    ) AS source_table
PIVOT
(
    -- Pivot operation to aggregate data and transform rows into columns
    [aggregate_function]([pivot_column])        
    FOR [pivot_column] IN ([first pivoted column], [second pivoted column], ...) 
) AS pivot_table; -- Alias for the result of the pivot operation

SQL PIVOT के डेटाबेस-विशिष्ट इम्प्लीमेंटेशन

SQL Server और Oracle डेटाबेस सीधे PIVOT ऑपरेटर का समर्थन करते हैं। हालाँकि, MySQL और PostgreSQL में SQL में पिवट टेबल बनाने के लिए वैकल्पिक तरीके हैं।

SQL Server में PIVOT

SQL Server PIVOT ऑपरेटर के लिए नेटिव सपोर्ट प्रदान करता है। यहाँ, हम PIVOT ऑपरेटर का उपयोग पंक्तियों को स्तंभों में बदलने और SUM() जैसे एग्रीगेट फ़ंक्शंस से डेटा का सारांश बनाने के लिए करेंगे। हम अधिक परिष्कृत डेटा मैनिपुलेशन के लिए WHERE, GROUP BY और ORDER BY जैसी SQL क्लॉज़ का भी उपयोग करेंगे।

नीचे दिया गया उदाहरण दिखाता है कि PIVOT ऑपरेटर का उपयोग 2020 या बाद के वर्ष के लिए डेटा फ़िल्टर करने (WHERE), शहर और वर्ष के आधार पर डेटा समूहित करने (GROUP BY) और शहर के अनुसार डेटा सॉर्ट करने (ORDER BY) में कैसे किया जाता है:

-- Select the city and sales data for the years 2019, 2020, and 2021
SELECT 
    city,                         
    [2019] AS Sales_2019,             
    [2020] AS Sales_2020,           
    [2021] AS Sales_2021              
FROM
    (
        -- Subquery to select city, year, and sales from the city_sales table
        SELECT city, year, sales 
        FROM city_sales
        WHERE year >= 2020 -- filtering
        GROUP BY city, year, sales -- grouping
    ) AS src                   
PIVOT
(
    -- Pivot the sales data to have years as columns, averaging the sales over each year
    SUM(sales) -- aggregating
    FOR year IN ([2019], [2020], [2021]) 
) AS pvt;         

WHERE, GROUP BY, और ORDER BY क्लॉज़ के साथ SQL PIVOT का उपयोग करते हुए बदले गए टेबल के आउटपुट का उदाहरण

सामान्य क्लॉज़ के साथ SQL PIVOT का उपयोग करते हुए बदले गए टेबल के आउटपुट का उदाहरण। चित्र: लेखक।

Oracle में PIVOT

SQL Server के समान, Oracle भी पंक्तियों को स्तंभों में बदलने के लिए PIVOT ऑपरेटर का उपयोग करता है। हालाँकि, Oracle डेटाबेस में PIVOT ऑपरेटर का सिंटैक्स SQL Server से थोड़ा भिन्न है। नीचे दी गई क्वेरी दिखाती है कि Oracle में PIVOT ऑपरेटर कैसा दिखाई देता है। ध्यान दें कि Oracle में स्तंभों को PIVOT ऑपरेटर के भीतर ही उपनाम (alias) दिए जाते हैं, जबकि SQL Server में यह बाहरी SELECT स्टेटमेंट में होता है।

-- Outer SELECT to choose all columns resulting from the PIVOT operation
SELECT *
FROM (
    -- Inner SELECT to retrieve the raw data of city, year, and sales
    SELECT city, year, sales
    FROM sales
)
-- PIVOT operation to convert rows to columns
PIVOT (
    SUM(sales) 
    -- Specify the year values to pivot and alias them as Sales_<year>
    FOR year IN (2019 AS Sales_2019, 2020 AS Sales_2020, 2021 AS Sales_2021)
)
ORDER BY city;

MySQL में Pivoting

MySQL डेटाबेस SQL PIVOT ऑपरेटर का समर्थन नहीं करता। MySQL में SQL पिवट टेबल बनाने के लिए, आपको सशर्त समाकलन के साथ CASE स्टेटमेंट का उपयोग करना होगा। उदाहरण के लिए, नीचे दी गई क्वेरी विभिन्न वर्षों के लिए बिक्री के योग द्वारा डेटा को समेकित करने के लिए एक पिवट टेबल बनाएगी, जिसे city के अनुसार समूहित और क्रमबद्ध किया गया है।

-- Select the city and sum the sales data for the years 2019, 2020, and 2021
SELECT 
    city,
    SUM(CASE WHEN year = 2019 THEN sales ELSE 0 END) AS Sales_2019,
    SUM(CASE WHEN year = 2020 THEN sales ELSE 0 END) AS Sales_2020,
    SUM(CASE WHEN year = 2021 THEN sales ELSE 0 END) AS Sales_2021
FROM 
    city_sales 
GROUP BY 
    city
ORDER BY 
    city; 

PostgreSQL में Pivoting

PostgreSQL डेटाबेस भी SQL PIVOT ऑपरेटर का समर्थन नहीं करता। इसलिए, पिवट टेबल बनाते समय सशर्त समाकलन के साथ CASE स्टेटमेंट का उपयोग करना महत्वपूर्ण है। नीचे दी गई क्वेरी PostgreSQL में पिवट टेबल बनाने के लिए प्रयुक्त सशर्त CASE स्टेटमेंट का एक उदाहरण है।

-- Select the city and sum the sales data for the years 2019, 2020, and 2021
SELECT 
    city,
    SUM(CASE WHEN year = 2019 THEN sales ELSE 0 END) AS Sales_2019, 
    SUM(CASE WHEN year = 2020 THEN sales ELSE 0 END) AS Sales_2020,
    SUM(CASE WHEN year = 2021 THEN sales ELSE 0 END) AS Sales_2021
FROM 
    city_sales
GROUP BY 
    city
ORDER BY 
    city; 

SQL PIVOT के साथ उन्नत तकनीकें

जटिल क्वेरी लिखने के लिए कुछ उन्नत SQL पिवटिंग तकनीकें होती हैं। इस खंड में, हम डायनेमिक पिवटिंग पर नज़र डालेंगे, जिसका उपयोग हम उन पिवट टेबल क्वेरियों को बनाने के लिए करते हैं जहाँ पिवट किए जाने वाले स्तंभ अज्ञात होते हैं। यह विधि रनटाइम पर पिवट टेबल उत्पन्न करने के लिए SQL का उपयोग करती है।

SQL Server में Dynamic PIVOT

नीचे दी गई क्वेरी SQL Server में year स्तंभ को डायनेमिक रूप से पिवट करने के लिए PIVOT का उपयोग करती है। क्वेरी city_sales टेबल से विशिष्ट वर्षों को प्राप्त करेगी। इसके बाद वह प्राप्त वर्षों का उपयोग करते हुए एक डायनेमिक PIVOT क्वेरी कॉन्स्ट्रक्ट और निष्पादित करेगी।

-- Declare variables to hold the column names and the dynamic query
DECLARE @cols AS NVARCHAR(MAX),
        @query AS NVARCHAR(MAX);
-- Get distinct values of the year column and concatenate them into a string
SELECT @cols = STRING_AGG(QUOTENAME(year), ',') 
               FROM (SELECT DISTINCT year FROM city_sales) AS years;
-- Construct the dynamic PIVOT query
SET @query = '
SELECT city, ' + @cols + '
FROM
(
    -- Subquery to select city, year, and sales from the city_sales table
    SELECT city, year, sales
    FROM city_sales
) AS src
PIVOT
(
    -- Pivot the sales data to have years as columns, summing the sales for each year
    SUM(sales)
    FOR year IN (' + @cols + ')
) AS pvt
ORDER BY city';  -- Order the results by city
-- Execute the dynamic PIVOT query
EXEC sp_executesql @query;

SQL डायनेमिक PIVOT का उपयोग करते हुए टेबल आउटपुट का उदाहरण

SQL डायनेमिक PIVOT का उपयोग करते हुए टेबल आउटपुट का उदाहरण। चित्र: लेखक।

Oracle में Dynamic PIVOT

Oracle डेटाबेस में, डायनेमिक पिवटिंग को EXECUTE IMMEDIATE स्टेटमेंट का उपयोग करके डायनेमिक क्वेरी निष्पादित कर समर्थित किया जाता है। LISTAGG फ़ंक्शन का उपयोग भी स्तंभ नामों और पिवट के भीतर उपनामों में प्रयुक्त एकल उद्धरण ' ' को डायनेमिक रूप से एकत्रित करने के लिए किया जाता है।

DECLARE
    cols VARCHAR2(4000);
    sql_query VARCHAR2(4000);
BEGIN
    -- Get the list of years dynamically
    SELECT LISTAGG('''' || year || ''' AS ' || 'sales_' || year, ',') 
    INTO cols
    FROM (SELECT DISTINCT year FROM city_sales);
    -- Construct the dynamic SQL query
    sql_query := 'SELECT * FROM (
                      SELECT city, year, sales
                      FROM city_sales
                  )
                  PIVOT (
                      SUM(sales)
                      FOR year IN (' || cols || ')
                  )
                  ORDER BY city';
    -- Execute the dynamic SQL query
    EXECUTE IMMEDIATE sql_query;
END;

MySQL में Dynamic Pivoting

MySQL प्रत्यक्ष डायनेमिक SQL का समर्थन नहीं करता। इसलिए, MySQL में डायनेमिक PIVOT के लिए आपको एक स्टोर्ड प्रोसीजर बनाना होगा। नीचे दी गई क्वेरी यह दिखाती है कि डायनेमिक PIVOT क्वेरी बनाने के लिए स्टोर्ड प्रोसीजर का उपयोग कैसे करें।

-- Declare variables to hold the dynamic columns (cols) and the final SQL query
DELIMITER $
CREATE PROCEDURE dynamic_pivot()
BEGIN
    DECLARE cols VARCHAR(1000);
    DECLARE sql_query VARCHAR(2000);
    -- Get the list of distinct years
    SELECT GROUP_CONCAT(DISTINCT
        CONCAT('SUM(CASE WHEN year = ', year, ' THEN sales ELSE 0 END) AS ', year, '')
    ) INTO cols
    FROM city_sales;
    -- Construct the dynamic SQL query
    SET sql_query = CONCAT('SELECT city, ', cols, ' FROM city_sales GROUP BY city ORDER BY city');
    -- Prepare and execute the SQL query
    PREPARE stmt FROM sql_query;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
END $
DELIMITER ;

स्टोर्ड प्रोसीजर बनाने के बाद, आपको डायनेमिक PIVOT क्वेरी निष्पादित करने के लिए उस स्टोर्ड प्रोसीजर को कॉल करना होगा:

CALL dynamic_pivot();

PostgreSQL में Dynamic Pivoting

इसी तरह, आप PostgreSQL में निम्नलिखित क्वेरी का उपयोग करके डायनेमिक PIVOT बना सकते हैं:

-- Block declaration to execute PL/pgSQL code in an anonymous code block
DO
$
DECLARE
    cols text;  -- Variable to store the list of columns for the dynamic query
    query text; -- Variable to store the dynamic SQL query
BEGIN
    -- Get distinct years and construct the list of SUM(CASE...) statements
    SELECT STRING_AGG(DISTINCT 'SUM(CASE WHEN year = ' || year || ' THEN sales ELSE 0 END) AS "Sales_' || year || '"', ', ')
    INTO cols
    FROM city_sales;
    -- Construct the dynamic PIVOT query
    query := 'SELECT city, ' || cols || ' FROM city_sales GROUP BY city ORDER BY city';
    -- Execute the dynamic PIVOT query
    EXECUTE query;
END
$;

निष्कर्ष और आगे की सीख

SQL में PIVOT का उपयोग करना समझना महत्वपूर्ण है यदि आप डेटा को कुशलतापूर्वक रूपांतरित और विश्लेषित करना चाहते हैं। SQL में पिवट टेबल बनाते समय, विभिन्न डेटाबेस में PIVOT ऑपरेटर के भिन्न-भिन्न इम्प्लीमेंटेशन सीखना बेहद ज़रूरी है। एक डेटा विश्लेषक के रूप में, मैं आपको अपनी SQL कौशल का अभ्यास जारी रखने के लिए प्रोत्साहित करता/करती हूँ ताकि आप अलग-अलग डेटासेट का विश्लेषण करने के लिए PIVOT को कैसे और कब लागू करना है, यह सीख सकें।

यदि आप उद्योग में पैर जमाने के इच्छुक एक नए डेटा विश्लेषक हैं या एक अनुभवी विश्लेषक, तो मैं DataCamp के Introduction to SQL और Intermediate SQL कोर्स लेने की सिफारिश करता/करती हूँ ताकि आप अपनी डेटा विश्लेषण कौशल को बेहतर बना सकें। मैं हमारे Data Manipulation in SQL कोर्स की भी सलाह देता/देती हूँ, जो इस ट्यूटोरियल में शामिल सबक्वेरी और अन्य अवधारणाएँ सिखाता है, साथ ही हमारे Introduction to SQL Server कोर्स के साथ, जो विशेष रूप से SQL Server को कवर करता है।


Allan Ouko's photo
Author
Allan Ouko
LinkedIn

डेटा एनालिटिक्स, बिज़नेस इंटेलिजेंस और डेटा साइंस में व्यावहारिक अनुभव रखने वाला डेटा साइंस तकनीकी लेखक। मैं SQL, Python, Power BI, Databricks और डेटा इंजीनियरिंग पर व्यावहारिक, उद्योग-केंद्रित सामग्री लिखता/लिखती हूँ, जो वास्तविक दुनिया की एनालिटिक्स कार्य से जुड़ी होती है। मेरी लेखनी तकनीकी गहराई और व्यावसायिक प्रभाव के बीच पुल का काम करती है, जिससे पेशेवरों को डेटा को आत्मविश्वासपूर्ण निर्णयों में बदलने में मदद मिलती है. 

अक्सर पूछे जाने वाले प्रश्न

SQL PIVOT क्या है?

SQL का PIVOT ऑपरेटर क्वेरी परिणामों में पंक्तियों को स्तंभों में बदल देता है।

कौन से डेटाबेस SQL PIVOT का समर्थन करते हैं?

SQL Server और Oracle PIVOT ऑपरेटर के लिए नेटिव सपोर्ट प्रदान करते हैं। MySQL और PostgreSQL समाकलन और CASE स्टेटमेंट का उपयोग करके पिवट टेबल बनाते हैं।

PIVOT और UNPIVOT में क्या अंतर है?

PIVOT ऑपरेटर समाकलन के माध्यम से डेटा पंक्तियों को स्तंभों में बदलकर उसे अधिक पठनीय बनाता है। UNPIVOT क्लॉज़ का उपयोग स्तंभों को पंक्तियों में बदलने के लिए किया जाता है।

यदि आप समाकलन के साथ PIVOT का उपयोग करके फिर UNPIVOT करें, तो क्या डेटा अपनी मूल अवस्था में वापस आ जाता है?

नहीं, सामान्यतः समाकलन के साथ PIVOT का उपयोग करने के बाद UNPIVOT लागू करना एकदम उल्टा ऑपरेशन नहीं होता।

क्या मैं SQL में डेटा को डायनेमिक रूप से पिवट कर सकता/सकती हूँ?

SQL Server और PostgreSQL डायनेमिक पिवटिंग का समर्थन करते हैं। MySQL स्टोर्ड प्रोसीजर का उपयोग करके डायनेमिक पिवटिंग की अनुमति देता है।

क्या PIVOT को SQL क्लॉज़ के साथ संयोजित किया जा सकता है?

आप डेटा फ़िल्टर करने के लिए PIVOT ऑपरेटर को SQL क्लॉज़ के साथ संयोजित कर सकते हैं, जिनमें WHERE, GROUP BY, और ORDER BY क्लॉज़ शामिल हैं।

क्या SQL में क्रॉस-टैबुलेशन और पिवट टेबल एक ही हैं?

हाँ, क्रॉस-टैबुलेशन (क्रॉस-टैब) और SQL में पिवट टेबल मूल रूप से एक ही अवधारणा हैं। दोनों का उपयोग डेटा का सारांश बनाने और उसे अधिक सुलभ बनाने के लिए किया जाता है।

विषय
SQL
डेटा विश्लेषण

DataCamp के साथ SQL सीखें

कोर्स

SQL Server परिचय

4 घंटा
173.5K
SQL Server का उपयोग करके सामान्य डेटा मैनिपुलेशन कार्य करना सीखें और इस डेटाबेस सिस्टम से सामान्य डेटा मैनिपुलेशन कार्यों में महारत हासिल करें।
विवरण देखेंRight Arrow
पाठ्यक्रम शुरू करें
और देखेंRight Arrow