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

mysql में पंक्ति से स्तंभ रूपांतरण

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

यदि आप समय से पहले मूल्यों को बदलने के लिए जानते हैं, तो आप उन्हें इसी तरह हार्ड-कोड कर सकते हैं:

select studentid,
  sum(case when subject = 'Java' then mark else 0 end) Java,
  sum(case when subject = 'C#' then mark else 0 end) `C#`,
  sum(case when subject = 'JavaScript' then mark else 0 end) JavaScript
from yourtable
group by studentid

देखें SQL Fiddle with Demo

यदि विषय के मान अज्ञात या लचीले हैं, तो आप गतिशील sql उत्पन्न करने के लिए तैयार कथन का उपयोग करना चाह सकते हैं:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'sum(case when subject = ''',
      subject,
      ''' then mark else 0 end) AS `',
      subject, '`'
    )
  ) INTO @sql
FROM  yourtable;

SET @sql = CONCAT('SELECT studentid, ', @sql, ' 
                  from yourtable
                  group by studentid');

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

देखें SQL Fiddle with Demo

दोनों प्रश्नों का परिणाम है:

| STUDENTID | JAVA | C# | JAVASCRIPT |
--------------------------------------
|        10 |   46 | 65 |         79 |
|        11 |   66 | 85 |         99 |



  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

  2. mysql में अधिकतम कितनी तालिका में शामिल हों? और इसे कैसे गिनें?

  3. चालान तालिका डिजाइन

  4. आप mysql से प्रत्येक n-वें पंक्ति का चयन कैसे करते हैं?

  5. MySQL कंसोल विशाल SQL फ़ाइलों के आयात पर धीमा