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

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

पिवट टेबल आपके डेटा का विश्लेषण करना और उपयोगी रुझान प्राप्त करना आसान बनाती हैं। हालांकि, आपको पिवट तालिका प्रश्नों को बार-बार उपयोग करने के लिए स्वचालित करने की आवश्यकता हो सकती है। चूंकि MySQL में पिवट टेबल बनाने के लिए कोई फ़ंक्शन नहीं है, इसलिए आपको MySQL में पिवट टेबल को स्वचालित करने के लिए SQL क्वेरी लिखनी होगी। तो आइए देखें कि MySQL में पिवट टेबल क्वेरी को स्वचालित कैसे करें

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

यहाँ MySQL में पिवट तालिका प्रश्नों को स्वचालित करने के चरण दिए गए हैं। मान लें कि आपके पास निम्न तालिका है

CREATE TABLE Meeting
(
    ID INT,
    Meeting_id INT,
    field_key VARCHAR(100),
    field_value VARCHAR(100)
);

INSERT INTO Meeting(ID,Meeting_id,field_key,field_value)
VALUES (1, 1,'first_name' , 'Alec');
INSERT INTO Meeting(ID,Meeting_id,field_key,field_value)
VALUES (2, 1,'last_name' , 'Jones');
INSERT INTO Meeting(ID,Meeting_id,field_key,field_value)
VALUES (3, 1,'occupation' , 'engineer');
INSERT INTO Meeting(ID,Meeting_id,field_key,field_value)
VALUES (4,2,'first_name' , 'John');
INSERT INTO Meeting(ID,Meeting_id,field_key,field_value)
VALUES (5,2,'last_name' , 'Doe');
INSERT INTO Meeting(ID,Meeting_id,field_key,field_value)
VALUES (6,2,'occupation' , 'engineer');

+------+------------+------------+-------------+
| ID   | Meeting_id | field_key  | field_value |
+------+------------+------------+-------------+
|    1 |          1 | first_name | Alec        |
|    2 |          1 | last_name  | Jones       |
|    3 |          1 | occupation | engineer    |
|    4 |          2 | first_name | John        |
|    5 |          2 | last_name  | Doe         |
|    6 |          2 | occupation | engineer    |
+------+------------+------------+-------------+

मान लें कि आप परीक्षा . द्वारा तालिका को पिवट करना चाहते हैं कॉलम ताकि प्रत्येक मीटिंग_आईडी के लिए 1 पंक्ति और प्रत्येक फ़ील्ड_की के लिए 1 कॉलम बनाया जा सके, जैसा कि नीचे दिखाया गया है।

+------------+-------------+-------------+-------------+
| Meeting_id | first_name  |  last_name  |  occupation |
+------------+-------------+-------------+-------------+
|          1 |       Alec  | Jones       | engineer    |
|          2 |       John  | Doe         | engineer    |
+------------+-------------+-------------+-------------+

पिवट टेबल क्वेरी को स्वचालित करें

यदि आप पहले से ही बनाए जाने वाले स्तंभों की संख्या जानते हैं, तो आप पिवट तालिका बनाने के लिए केस स्टेटमेंट का उपयोग करके पिवट टेबल क्वेरी बना सकते हैं।

हालांकि, कई बार आपको पिवट टेबल में बनाए जाने वाले कॉलम के बारे में पता नहीं होता है। ऐसे मामलों में, आप निम्न क्वेरी का उपयोग करके गतिशील रूप से पिवट टेबल बना सकते हैं।

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when exam = ''',
      exam,
      ''' then field_value end) ',
      field_key
    )
  ) INTO @sql
FROM
  Meeting;
SET @sql = CONCAT('SELECT Meeting_id, ', @sql, ' 
                  FROM Meeting 
                   GROUP BY Meeting_id');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

उपरोक्त कथनों में, GROUP_CONCAT आपको कई पंक्तियों से फ़ील्ड_की मानों को एकल स्ट्रिंग में संयोजित करने की अनुमति देता है। उपरोक्त क्वेरी में, हम फ़ील्ड_की कॉलम में अद्वितीय मानों के आधार पर गतिशील रूप से CASE स्टेटमेंट बनाने के लिए GROUP_CONCAT का उपयोग करते हैं और @sql वेरिएबल में स्टोर करते हैं, जो तब हमारी चुनिंदा क्वेरी बनाने के लिए उपयोग किया जाता है। तो यह आपको MySQL में पिवट टेबल क्वेरी को स्वचालित करने में मदद करता है

+------------+------------+-----------+------------+
| Meeting_id | first_name | last_name | occupation |
+------------+------------+-----------+------------+
|          1 | Alec       | Jones     | engineer   |
|          2 | John       | Doe       | engineer   |
+------------+------------+-----------+------------+

अब जब आप जानते हैं कि MySQL में पिवट टेबल क्वेरी को स्वचालित कैसे किया जाता है, तो आप WHERE क्लॉज या जॉइन जोड़कर अपनी आवश्यकताओं के अनुसार उन्हें कस्टमाइज़ कर सकते हैं।

यदि आप केवल चुनिंदा पंक्ति मानों को कॉलम के रूप में पिवट करना चाहते हैं, तो आप अपने पहले चयन GROUP_CONCAT स्टेटमेंट में WHERE क्लॉज जोड़ सकते हैं।

SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when field_key = ''',
      field_key,
      ''' then field_value end) ',
      field_key
    )
  ) INTO @sql
FROM
  Meeting
WHERE <condition>;

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

SET @sql = CONCAT('SELECT Meeting_id, ', @sql, ' 
                  FROM Meeting WHERE <condition>
                   GROUP BY Meeting_id');

इसी तरह, जब आप MySQL में पंक्तियों को गतिशील रूप से कॉलम में स्थानांतरित करते हैं, तो आप अपनी SQL क्वेरी में JOINS भी लागू कर सकते हैं।

आप एक रिपोर्टिंग टूल का उपयोग करके पिवट तालिका प्रश्नों को स्वचालित कर सकते हैं। यहां Ubiq का उपयोग करके बनाई गई स्वचालित पिवट तालिका का एक उदाहरण दिया गया है।

क्या आप जानते हैं कि आप केवल ड्रैग एंड ड्रॉप का उपयोग करके 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. PHP और mySQL:वर्ष 2038 बग:यह क्या है? इसे कैसे हल करें?

  2. mysql में सभी प्रश्नों को लॉग करें

  3. MySQL SOUNDEX () उदाहरण

  4. MySQL टेक्स्ट डेटा प्रकारों के लिए संग्रहण आकार को समझना

  5. शीर्ष 5 MySQL T-SQL डेवलपर्स के लिए युक्तियों के साथ सिंटैक्स हटाएं