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

Permintaan mysql untuk mengonversi baris ke kolom secara dinamis

Anda dapat menggunakan GROUP BY dan MAX untuk mensimulasikan poros. MySQL juga mendukung IF pernyataan.

SELECT  ID,
        MAX(IF(`order` = 1, data, NULL)) data1,
        MAX(IF(`order` = 2, data, NULL)) data2
FROM    TableA
GROUP   BY ID

Jika Anda memiliki beberapa nilai order , SQL dinamis mungkin lebih tepat sehingga Anda tidak perlu mengubah kueri:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(IF(`order` = ', `order`, ',data,NULL)) AS data', `order`)
  ) INTO @sql
FROM TableName;

SET @sql = CONCAT('SELECT  ID, ', @sql, ' 
                  FROM    TableName
                  GROUP   BY ID');

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

OUTPUT DARI KEDUA QUERI:

╔════╦═══════╦═══════╗
║ ID ║ DATA1 ║ DATA2 ║
╠════╬═══════╬═══════╣
║  1 ║ P     ║ S     ║
║  2 ║ R     ║ Q     ║
╚════╩═══════╩═══════╝


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 4 Cara Memeriksa Tipe Data Kolom di MySQL

  2. Instal beberapa instance MySQL di server Linux - gunakan file konfigurasi MySQL terpisah

  3. Bagaimana cara mengganti nama file yang diunggah sebelum menyimpannya ke dalam direktori?

  4. MySQL DROP COLUMN

  5. Apakah mungkin untuk GROUP BY beberapa kolom menggunakan MySQL?