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

MySQL में टेबल को अनपिवोट कैसे करें

कभी-कभी आपको स्तंभों को पंक्तियों में, या MySQL में तालिका को अनपिवट करने की आवश्यकता होती है। चूंकि MySQL में किसी तालिका को UNPIVOT या REVERSE PIVOT करने के लिए कोई फ़ंक्शन नहीं है, इसलिए आपको स्तंभों को पंक्तियों में स्थानांतरित करने के लिए एक SQL क्वेरी लिखनी होगी। MySQL में टेबल को अनपिवट करने का तरीका यहां बताया गया है।

MySQL में टेबल को अनपिवोट कैसे करें

मान लें कि आपके पास निम्न पिवट तालिका है

mysql>create table data(id int, a varchar(255), b varchar(255), c varchar(255));
mysql>insert into data(id,a,b,c) values(1,'a1','b1','c1'),(2,'a1','b1','c1');
mysql>select * from data;

+------+------+------+------+
| id   | a    | b    | c    |
+------+------+------+------+
|    1 | a1   | b1   | c1   |
|    2 | a1   | b1   | c1   |
+------+------+------+------+

मान लें कि आप MySQL में टेबल को अनपिवट करना चाहते हैं।

1 | a1 | a
1 | b1 | b
1 | c1 | c
2 | a2 | a
2 | b2 | b
2 | c2 | c

बोनस पढ़ें : MySQL में डायनामिक पिवट टेबल कैसे बनाएं

MySQL में तालिका अनपिवट करें

यहाँ SQL में अनपिवट करने की क्वेरी है। चूंकि MySQL UNPIVOT फ़ंक्शन की पेशकश नहीं करता है, इसलिए आपको MySQL में एक टेबल को उलटने के लिए UNION ALL क्लॉज का उपयोग करने की आवश्यकता है।

mysql> select id, 'a' col, a value
      from data
      union all
      select id, 'b' col, b value
      from data
      union all
      select id, 'c' col, c value
      from data;
+------+-----+-------+
| id   | col | value |
+------+-----+-------+
|    1 | a   | a1    |
|    2 | a   | a1    |
|    1 | b   | b1    |
|    2 | b   | b1    |
|    1 | c   | c1    |
|    2 | c   | c1    |
+------+-----+-------+

उपरोक्त क्वेरी में, हम मूल रूप से मूल तालिका को 3 छोटे में काटते हैं - प्रत्येक कॉलम a, b, c के लिए एक और फिर UNION ALL का उपयोग करके उन्हें एक के नीचे एक जोड़ देते हैं।

यदि आप पंक्तियों को फ़िल्टर करना चाहते हैं, तो आप नीचे दिखाए अनुसार WHERE क्लॉज़ जोड़ सकते हैं

mysql> select id, 'a' col, a value
      from data
      WHERE condition
      union all
      select id, 'b' col, b value
      from data
      WHERE condition
      union all
      select id, 'c' col, c value
      from data
      WHERE condition;

बोनस पढ़ा गया: MySQL में पंक्तियों को गतिशील रूप से कॉलम में कैसे स्थानांतरित करें

दुर्भाग्य से, यह थकाऊ है लेकिन MySQL में अनपिवट करने के केवल 2 तरीकों में से एक है। दूसरे में क्रॉस जॉइन करना शामिल है, जैसा कि नीचे दिखाया गया है।

mysql> select t.id,
       c.col,
       case c.col
         when 'a' then a
         when 'b' then b
         when 'c' then c
       end as data
     from data t
     cross join
     (
       select 'a' as col
       union all select 'b'
       union all select 'c'
     ) c;
+------+-----+------+
| id   | col | data |
+------+-----+------+
|    1 | a   | a1   |
|    2 | a   | a1   |
|    1 | b   | b1   |
|    2 | b   | b1   |
|    1 | c   | c1   |
|    2 | c   | c1   |
+------+-----+------+

बोनस पढ़ें :MySQL में पिवट टेबल प्रश्नों को स्वचालित कैसे करें

आप WHERE क्लॉज का उपयोग करके उपरोक्त क्वेरी को MySQL में तालिका को अनपिवट करने के लिए कस्टमाइज़ कर सकते हैं। परिणाम को तालिका में प्लॉट करने के लिए आप रिपोर्टिंग टूल का भी उपयोग कर सकते हैं। यहां Ubiq का उपयोग करके बनाई गई तालिका का एक उदाहरण दिया गया है।

यदि आप MySQL डेटाबेस से पिवट टेबल, चार्ट और डैशबोर्ड बनाना चाहते हैं, तो आप Ubiq को आजमा सकते हैं। हम 14-दिन का निःशुल्क परीक्षण प्रदान करते हैं।

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql रूट पासवर्ड कैसे रीसेट करें?

  2. SUM . द्वारा MySQL समूह

  3. ग्रुप बाय क्लॉज के बिना MySQL एग्रीगेट फंक्शन

  4. अमान्य सिंटैक्स त्रुटि प्रकार =हाइबरनेट द्वारा उत्पन्न डीडीएल में MyISAM

  5. MySQL में किसी तिथि से महीना कैसे प्राप्त करें