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

इस SQL ​​​​क्वेरी को पिवट टेबल की तरह कैसे जेनरेट करें

आप CASE . का उपयोग करके ऐसा कर सकते हैं कथन:

SELECT p.productid, p.da, p.ig, p.des
      ,GROUP_CONCAT(CASE WHEN ck.title = 'St Code' 
                         THEN cv.value ELSE NULL END) AS 'St Code'
      ,GROUP_CONCAT(CASE WHEN ck.title = 'Rear Les' 
                         THEN cv.value ELSE NULL END) AS 'Rear Les'
FROM Products p
JOIN code_values cv ON p.productid = cv.pid
JOIN code_keys ck ON cv.codeid = ck.codeid
GROUP BY p.productid;

यदि आपके पास code_keys की अज्ञात संख्या है आप इस गतिशील क्वेरी को आजमा सकते हैं:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'GROUP_CONCAT(CASE WHEN `title` = ''',
      `title`,
      ''' THEN cv.value ELSE NULL END) AS `',
      `title`, '`'
    )
  ) INTO @sql
FROM code_keys ck JOIN code_values cv ON cv.codeid = ck.codeid;

SET @sql = CONCAT('SELECT p.productid, p.da, p.ig, p.des, ', @sql,'
                     FROM Products p
                     JOIN code_values cv ON p.productid = cv.pid
                     JOIN code_keys ck ON cv.codeid = ck.codeid
                    GROUP BY p.productid
                  ');

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

आउटपुट:

| PRODUCTID | DA | IG | DES |      ST CODE |  REAR LES |
--------------------------------------------------------
|         5 | 78 | 33 |  23 | ST 102 200 R | 12 000 33 |
|         8 | 88 | 13 |  21 | ST 100 101 R | 11 223 34 |

देखें यह SQLFiddle




  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. SQL सर्वर में (MySQL) LIMIT कैसे लिखें?

  3. MySQL उपयोगकर्ता को होस्ट एक्सेस अनुमति पुन:असाइन करें

  4. MySQL - उस तालिका में कैसे सम्मिलित करें जिसमें कई-से-अनेक संबंध हैं

  5. MySQL नेस्टेड संसाधन (पिवट टेबल) देखने/अद्यतन/प्रबंधित करने की अनुमति