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

Transpos baris menjadi kolom dengan MySQL tanpa menggunakan UNIONS?

Saya mendapatkan ini dari buku The Art of SQL , halaman 284-286:

Katakanlah nama tabel Anda adalah foo .

Pertama, buat tabel bernama pivot :

CREATE Table pivot (
  count int
);

Masukkan ke dalam tabel itu baris sebanyak kolom yang ingin Anda putar di foo . Karena Anda memiliki tiga kolom di foo yang ingin Anda pivot, buat tiga baris di tabel pivot:

insert into pivot values (1);
insert into pivot values (2);
insert into pivot values (3);

Sekarang lakukan penggabungan Cartesian antara foo dan pivot , menggunakan CASE untuk memilih kolom yang benar berdasarkan hitungan:

SELECT foo.id, Case pivot.count
  When 1 Then cat
  When 2 Then one_above
  When 3 Then top_level
End Case
FROM foo JOIN pivot;

Ini akan memberikan apa yang Anda inginkan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara terbaik untuk menyimpan nama kategori dari php di tabel mysql

  2. Bagaimana cara menyisipkan banyak baris berdasarkan kueri?

  3. Playbook instalasi MySQL idempoten yang mungkin

  4. Bagaimana cara menambahkan kolom baru ke tabel MYSQL?

  5. Bagaimana cara mengakses server jarak jauh dengan klien phpMyAdmin lokal?