Oracle 11g menyediakan PIVOT operasi yang melakukan apa yang Anda inginkan.
Solusi Oracle 11g
select * from
(select id, k, v from _kv)
pivot(max(v) for k in ('name', 'age', 'gender', 'status')
(Catatan:Saya tidak memiliki salinan 11g untuk menguji ini, jadi saya belum memverifikasi fungsinya)
Saya memperoleh solusi ini dari:https://orafaq.com/wiki/PIVOT
EDIT -- opsi pivot xml (juga Oracle 11g)
Ternyata ada juga pivot xml pilihan ketika Anda tidak mengetahui semua kemungkinan judul kolom yang mungkin Anda perlukan. (lihat JENIS XML bagian di dekat bagian bawah halaman yang terletak di https://www.Oracle.com/technetwork/articles/sql/11g-pivot-097235.html)
select * from
(select id, k, v from _kv)
pivot xml (max(v)
for k in (any) )
(Catatan:Seperti sebelumnya saya tidak memiliki salinan 11g untuk menguji ini, jadi saya belum memverifikasi fungsinya)
Edit2: Mengubah v di pivot dan pivot xml pernyataan ke max(v) karena seharusnya dikumpulkan seperti yang disebutkan dalam salah satu komentar. Saya juga menambahkan in klausa yang bukan opsional untuk pivot . Tentu saja, harus menentukan nilai dalam in klausa mengalahkan tujuan memiliki kueri pivot/tab silang yang sepenuhnya dinamis seperti keinginan poster pertanyaan ini.