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

MySQL Bergabung dengan Beberapa Baris sebagai Kolom

Sebuah INNER JOIN akan mencukupi kebutuhan Anda. MySQL tidak memiliki PIVOT fungsi oleh Anda masih dapat mensimulasikannya menggunakan CASE dan MAX() fungsi.

SELECT  a.ID, a.NAME,
        MAX(CASE WHEN b.Race_Number = 1 THEN b.Place ELSE NULL END) Race1,
        MAX(CASE WHEN b.Race_Number = 2 THEN b.Place ELSE NULL END) Race2,
        MAX(CASE WHEN b.Race_Number = 3 THEN b.Place ELSE NULL END) Race3
FROM    Table1 a
        INNER JOIN Table2 b
            ON a.ID = b.ID
GROUP   BY a.ID, a.Name

Tetapi jika Anda memiliki nomor RACE yang tidak dikenal , lalu DYNAMIC SQL jauh lebih disukai.

SET @sql = NULL;
SELECT
    GROUP_CONCAT(DISTINCT
    CONCAT('MAX(CASE WHEN b.Race_Number = ', Race_Number,
      ' THEN b.Place END) AS ', CONCAT('`Race', Race_Number, '`'))
    ) INTO @sql
FROM Table2;

SET @sql = CONCAT('SELECT s.Student_name, ', @sql, ' 
                   FROM Table1 a
                   LEFT JOIN Table2 b 
                        ON ON a.ID = b.ID
                   GROUP   BY a.ID, a.Name');

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



  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:Kelompokkan Menurut &Hitung Banyak Bidang

  2. Perbedaan menit dari dua bidang waktu di MySQL

  3. MySQL ORDER BY Date field yang tidak dalam format tanggal

  4. Jumlah maksimum record dalam tabel database MySQL

  5. cara mendapatkan jumlah baris total dengan mysqli