कभी-कभी आपको स्तंभों को पंक्तियों में, या 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-दिन का निःशुल्क परीक्षण प्रदान करते हैं।