Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
MySQL + SQL · Lesson 148

MySQL में Pivot Table

Pivot क्या है

Pivot table rows को columns में बदलकर cross-tab summary बनाती है — जैसे हर महीने को अपना column बनाकर sales totals। MySQL में कोई PIVOT keyword नहीं, पर आप SUM के अंदर CASE से आसानी से एक बना सकते हैं। इसे conditional aggregation कहते हैं।

💡 MySQL में PIVOT नहीं — प्रति column SUM(CASE WHEN ... THEN value ELSE 0 END) इस्तेमाल कीजिए।

शुरुआती data

-- sales table (rows)
+--------+-------+--------+
| region | month | amount |
+--------+-------+--------+
| North  | Jan   |   100  |
| North  | Feb   |   150  |
| South  | Jan   |   200  |
+--------+-------+--------+

हम प्रति region एक row चाहते हैं, Jan और Feb columns के रूप में totals दिखाते हुए। वह pivot है।

SUM के अंदर CASE

Trick एक CASE है जो amount सिर्फ़ मेल खाते महीने को लौटाता है, वरना 0:

SUM(CASE WHEN month = 'Jan' THEN amount ELSE 0 END) AS Jan

हर region को, यह सिर्फ़ January amounts जोड़ता है। जो column चाहिए उस हर एक को ऐसा एक expression दोहराइए।

Pivot query

SELECT region,
    SUM(CASE WHEN month = 'Jan' THEN amount ELSE 0 END) AS Jan,
    SUM(CASE WHEN month = 'Feb' THEN amount ELSE 0 END) AS Feb
FROM sales
GROUP BY region;
+--------+-----+-----+ | region | Jan | Feb | +--------+-----+-----+ | North | 100 | 150 | | South | 200 | 0 | +--------+-----+-----+

GROUP BY region प्रति region एक row बनाता है, और हर CASE-SUM सही महीने का column भरता है। Rows columns बन गई हैं।

COUNT से pivot

SELECT region,
    SUM(CASE WHEN status = 'paid' THEN 1 ELSE 0 END) AS paid,
    SUM(CASE WHEN status = 'due' THEN 1 ELSE 0 END) AS due
FROM invoices
GROUP BY region;

Total के बजाय गिनने को, THEN में 1 डालिए। यह गिनता है कितनी rows हर category में आती हैं — count-based cross-tab, जैसे प्रति region paid बनाम due invoices।

बातें और सीमाएँ

  • आप columns मैन्युअल list करते हैं। हर output column को अपना CASE चाहिए।
  • Fixed categories सबसे अच्छी चलती हैं। पहले से ज्ञात महीनों या statuses को बढ़िया।
  • Dynamic columns को generated SQL चाहिए। अनजान values को, query code में बनाइए।

आम गलतियाँ

  • GROUP BY भूलना। इसके बिना, pivot प्रति category एक row में collapse नहीं होता।
  • SUM के साथ अनजाने ELSE NULL इस्तेमाल करना। साफ़ totals को ELSE 0 इस्तेमाल कीजिए।
  • PIVOT keyword की उम्मीद। MySQL में कोई नहीं; CASE इस्तेमाल कीजिए।
  • बेमेल column labels। हर pivot column को AS से नाम दीजिए।

सारांश

  • Pivot cross-tab summary को rows को columns में बदलता है।
  • MySQL में PIVOT नहीं; SUM(CASE WHEN ... THEN ... ELSE 0 END) इस्तेमाल कीजिए।
  • प्रति एक row पाने को row category से GROUP BY कीजिए।
  • Counts से pivot को CASE में 1 इस्तेमाल कीजिए।
  • आपको हर output column list करना होगा, तो यह fixed categories को उपयुक्त।

आगे, grouping सीखिए GROUP BY और HAVING में, या conditional logic CASE expression में।

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

MySQL में pivot table क्या है?
Pivot table rows को columns में बदलकर cross-tab summary बनाती है — जैसे, महीनों को rows के बजाय columns के रूप में total sales दिखाना। MySQL में कोई PIVOT keyword नहीं, तो आप इसे SUM जैसी aggregate functions के अंदर CASE expressions से बनाते हैं।
MySQL में pivot table कैसे बनाऊँ?
हर output column को CASE के साथ SUM इस्तेमाल कीजिए: SUM(CASE WHEN month = 'Jan' THEN amount ELSE 0 END) AS Jan, प्रति महीना दोहराया, row category से grouped। हर CASE उस column की value चुनता है।
MySQL pivoting को CASE क्यों इस्तेमाल करता है?
MySQL में कुछ databases जैसा built-in PIVOT command नहीं। Standard technique conditional aggregation है: SUM (या COUNT) के अंदर CASE हर row को सही column में evaluate करता है, और GROUP BY उन्हें प्रति category एक row में collapse करता है।
Sums के बजाय counts से pivot कैसे करूँ?
CASE के साथ COUNT, या 1 का SUM इस्तेमाल कीजिए: SUM(CASE WHEN status = 'paid' THEN 1 ELSE 0 END) AS paid। यह गिनता है कितनी rows हर column category में आती हैं, count-based cross-tab देकर।
CASE-based pivots की सीमाएँ क्या हैं?
मुख्य सीमा यह है कि आपको हर output column मैन्युअल list करना होगा, तो यह नई values को अपने-आप adapt नहीं होता। एक fixed, ज्ञात set की categories (महीने, statuses) को यह अच्छा चलता है; dynamic columns को आपको SQL programmatically बनाना होगा।
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.
अगला topicपिछले 7 दिन के Records आपकी प्रगति: 148 / 151 (98%) · Lesson 149 / 151 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें