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

Menetapkan nilai kolom sebagai nama kolom dalam hasil kueri SQL

Ini dilakukan dengan tabel pivot . Pengelompokan berdasarkan id , Anda mengeluarkan CASE pernyataan untuk setiap nilai yang ingin Anda tangkap dalam kolom dan gunakan sesuatu seperti MAX() agregat untuk menghilangkan nol dan menciutkan menjadi satu baris.

SELECT
  id,
  /* if col1 matches the name string of this CASE, return col2, otherwise return NULL */
  /* Then, the outer MAX() aggregate will eliminate all NULLs and collapse it down to one row per id */
  MAX(CASE WHEN (col1 = 'name') THEN col2 ELSE NULL END) AS name,
  MAX(CASE WHEN (col1 = 'name2') THEN col2 ELSE NULL END) AS name2,
  MAX(CASE WHEN (col1 = 'name3') THEN col2 ELSE NULL END) AS name3
FROM
  yourtable
GROUP BY id
ORDER BY id

Berikut contoh yang berfungsi

Catatan:Ini hanya berfungsi sebagaimana adanya untuk jumlah nilai yang mungkin dan terbatas untuk col1 . Jika jumlah nilai yang mungkin tidak diketahui, Anda perlu membuat pernyataan SQL secara dinamis dalam satu lingkaran.



  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 berkata:Dokumentasi #1045 - Akses ditolak untuk pengguna 'root'@'localhost' (menggunakan kata sandi:TIDAK)

  2. DATABASE() – Dapatkan Nama Database Saat Ini di MySQL

  3. Perbedaan bulan antara tanggal di MySQL

  4. Bagaimana cara melakukan mysqldump tanpa prompt kata sandi?

  5. Bagaimana mengatasi masalah Tidak dapat memuat plugin otentikasi 'caching_sha2_password'