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.