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

MySQL डायनेमिक-पिवट

दुर्भाग्य से, MySQL में PIVOT नहीं है फ़ंक्शन लेकिन आप इसे एक समग्र फ़ंक्शन और CASE . का उपयोग करके मॉडल कर सकते हैं बयान। एक गतिशील संस्करण के लिए, आपको तैयार कथनों का उपयोग करना होगा:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when part_type = ''',
      part_type,
      ''' then part_id end) AS part_',
      part_type, '_id'
    )
  ) INTO @sql
FROM
  parts;
SET @sql = CONCAT('SELECT product_id, ', @sql, ' 
                  FROM parts 
                   GROUP BY product_id');

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

देखें SQL Fiddle with Demo

यदि आपके पास केवल कुछ कॉलम हैं, तो आप एक स्टेटिक संस्करण का उपयोग कर सकते हैं:

select product_id,
  max(case when part_type ='A' then part_id end) as Part_A_Id,
  max(case when part_type ='B' then part_id end) as Part_B_Id
from parts
group by product_id


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या कोई Android ऐप सीधे किसी ऑनलाइन mysql डेटाबेस से कनेक्ट हो सकता है?

  2. डेबियन 10 . में मारियाडीबी डेटाबेस कैसे स्थापित करें

  3. MySQLi गिनती (*) हमेशा 1 लौटाती है

  4. क्या mysql कनेक्शन बंद करना महत्वपूर्ण है?

  5. डेटाबेस छोड़ने में त्रुटि ('.test\' rmdir नहीं कर सकता, त्रुटि:17)