MySQL
धुरी के सवाल
खोज…
टिप्पणियों
MySQL में पिवट क्वेरी का निर्माण GROUP_CONCAT()
फ़ंक्शन पर निर्भर करता है। यदि पिवट क्वेरी के कॉलम बनाने वाले एक्सप्रेशन का परिणाम बड़ा होने की उम्मीद है, तो group_concat_max_len
वेरिएबल का मान बढ़ाया जाना चाहिए:
set session group_concat_max_len = 1024 * 1024; -- This should be enough for most cases
पिवट क्वेरी बनाना
MySQL धुरी प्रश्नों को बनाने के लिए एक अंतर्निहित तरीका प्रदान नहीं करता है। हालाँकि, इन्हें तैयार किए गए कथनों का उपयोग करके बनाया जा सकता है।
मान लें कि तालिका tbl_values
:
ईद | नाम | समूह | मूल्य |
---|---|---|---|
1 | पीट | ए | 10 |
2 | पीट | बी | 20 |
3 | जॉन | ए | 10 |
अनुरोध: एक क्वेरी बनाएं जो प्रत्येक Name
के Value
का योग दिखाता है; Group
कॉलम हेडर होना चाहिए और Name
पंक्ति हेडर होना चाहिए।
-- 1. Create an expression that builds the columns
set @sql = (
select group_concat(distinct
concat(
"sum(case when `Group`='", Group, "' then `Value` end) as `", `Group`, "`"
)
)
from tbl_values
);
-- 2. Complete the SQL instruction
set @sql = concat("select Name, ", @sql, " from tbl_values group by `Name`");
-- 3. Create a prepared statement
prepare stmt from @sql;
-- 4. Execute the prepared statement
execute stmt;
परिणाम:
नाम | ए | बी |
---|---|---|
जॉन | 10 | शून्य |
पीट | 10 | 20 |
महत्वपूर्ण: तैयार किए गए कथन को एक बार निपटाएं, जिसकी अब आवश्यकता नहीं है:
deallocate prepare stmt;
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow