खोज…


टिप्पणियों

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;

SQL फिडेल पर उदाहरण



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow