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

Bagaimana memilih nilai Kolom sebagai nama Kolom dengan kondisi di tabel SQL

Salah satu cara untuk melakukannya adalah dengan menggunakan agregasi bersyarat

SELECT name,
       MAX(CASE WHEN field = 'Gender' THEN value END) gender,
       MAX(CASE WHEN field = 'Age' THEN value END) age
  FROM customers
 GROUP BY name

Cara lain (jika Anda hanya tertarik pada dua kolom ini) adalah

SELECT c1.name, c1.value gender, c2.value age
  FROM customers c1 JOIN customers c2
    ON c1.name = c2.name
   AND c1.field = 'Gender'
   AND c2.field = 'Age';

Asumsinya adalah bahwa Gender dan Usia ada untuk setiap Nama. Jika tidak demikian, gunakan OUTER JOIN alih-alih INNER JOIN seperti itu

SELECT n.name, c1.value gender, c2.value age
  FROM
(
  SELECT DISTINCT name
    FROM customers
) n LEFT JOIN customers c1
    ON n.name = c1.name AND c1.field = 'Gender' 
    LEFT JOIN customers c2
    ON n.name = c2.name AND c2.field = 'Age';

Keluaran:

|   NAME | GENDER | AGE |
|--------|--------|-----|
| Angela | Female |  28 |
|  Davis |   Male |  30 |

Ini SQLFiddle demo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah ada penurunan kinerja jika ada terlalu banyak kolom dalam sebuah tabel?

  2. MySQL:Cara massal SELECT baris dengan banyak pasangan dalam klausa WHERE

  3. Memilih semua item dalam satu tabel dan bergabung dengan tabel lain, memungkinkan nulls

  4. server WAMP. Direktori data yang sangat besar di MySQL?

  5. MySQL 5.5.9 dan kesalahan pembuatan tabel Hibernate pada TYPE