Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

mengubah baris tabel menjadi kolom di mysql

Jika Anda hanya memiliki dua nilai untuk item_id , maka tidak masalah untuk nilai kode keras. Contoh

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

Jika tidak, bila Anda memiliki jumlah skor yang tidak diketahui, Dynamic SQL lebih disukai.

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;

Kedua kueri akan OUTPUT sama

╔══════════════╦══════════════╦══════════════╗
║ 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. Memilih nilai yang dikelompokkan ke pengidentifikasi tertentu

  2. Laravel dengan masalah Docker menghubungkan MySQL

  3. Apa itu PyMySQL dan apa bedanya dengan MySQLdb? Bisakah itu mempengaruhi penyebaran Django?

  4. MYSQL Kiri Gabung COUNTS dari beberapa tabel

  5. Bagaimana mengkonversi database mysql UTAMA ke InnoDB dari MyIsam