Oracle 11g poskytuje PIVOT operace, která dělá to, co chcete.
11g roztok Oracle
select * from
(select id, k, v from _kv)
pivot(max(v) for k in ('name', 'age', 'gender', 'status')
(Poznámka:Nemám kopii 11g, na které bych to mohl vyzkoušet, takže jsem neověřil jeho funkčnost)
Toto řešení jsem získal z:https://orafaq.com/wiki/PIVOT
UPRAVIT – možnost pivot xml (také Oracle 11g)
Zřejmě existuje také pivot xml možnost, když neznáte všechna možná záhlaví sloupců, která byste mohli potřebovat. (viz TYP XML sekce v dolní části stránky na adrese 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) )
(Poznámka:Stejně jako předtím nemám kopii 11g k testování, takže jsem neověřil jeho funkčnost)
Úprava2: Změněno in v pivot a pivot xml příkazy na max(v) protože to má být agregováno, jak je uvedeno v jednom z komentářů. Také jsem přidal in klauzule, která není volitelná pro pivot . Samozřejmě je nutné zadat hodnoty v in klauzule maří cíl mít zcela dynamický pivot/konverzní dotaz, jak bylo přáním plakátu této otázky.