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

mysql में टेबल पंक्तियों को कॉलम में बदलना

यदि आपके पास item_id . के लिए केवल दो मान हैं , तो यह हार्ड कोड मानों के लिए ठीक है। उदाहरण

SELECT  a.Name AS Student_Name,
        MAX(CASE WHEN item_id = '01' THEN b.score END) Item_1_Score,
        MAX(CASE WHEN item_id = '02' THEN b.score END) Item_2_Score
FROM    student_info a
        LEFT JOIN scores b
            ON a.id = b.student_ID
GROUP   BY a.Name

अन्यथा, जब आपके पास अज्ञात संख्या में स्कोर हों, तो एक Dynamic SQL बहुत पसंद किया जाता है।

SELECT  GROUP_CONCAT(DISTINCT
        CONCAT('MAX(CASE WHEN item_id = ''',
               item_id,
               ''' THEN Score END) AS ',
               CONCAT('`Item_', item_id, '_Score`')
               )) INTO @sql
FROM scores;

SET @sql = CONCAT('SELECT   a.Name AS Student_Name, ', @sql, ' 
                    FROM    student_info a
                            LEFT JOIN scores b
                                ON a.id = b.student_ID
                    GROUP   BY a.Name');

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

दोनों प्रश्न समान होंगे

╔══════════════╦══════════════╦══════════════╗
║ STUDENT_NAME ║ ITEM_1_SCORE ║ ITEM_2_SCORE ║
╠══════════════╬══════════════╬══════════════╣
║ dan          ║           55 ║           44 ║
║ david        ║           66 ║           45 ║
║ jon          ║           37 ║           45 ║
╚══════════════╩══════════════╩══════════════╝


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. zsh:कमांड नहीं मिली:mysql

  2. MYSQL से डेटा प्रदर्शित करें; SQL कथन त्रुटि

  3. mysql क्वेरी का चयन करें जहां दिनांक =... डेटा वापस नहीं कर रहा है

  4. mysql डेटाबेस से दो स्पिनरों को पॉप्युलेट करें जो एक दूसरे पर निर्भर हैं

  5. MySQL - आंशिक शब्द मिलान और प्रासंगिकता स्कोर के साथ कुशल खोज (FULLTEXT)