Anda dapat memutar data seperti ini di versi Oracle apa pun.
SELECT id,
MAX( CASE WHEN key = 'name' THEN value ELSE null END ) name,
MAX( CASE WHEN key = 'height' THEN value ELSE null END ) height,
MAX( CASE WHEN key = 'awesomeness' THEN value ELSE null END ) awesomeness
FROM facts
WHERE id IN (1,2,3)
GROUP BY id
Jika Anda menggunakan 11g, Anda juga dapat menggunakan PVOT
operator.
Namun, jika ini mewakili model data Anda, model data atribut-entitas semacam itu umumnya akan menjadi agak tidak efisien. Anda biasanya akan jauh lebih baik disajikan dengan tabel yang memiliki kolom untuk name
, height
, awesomeness
, dll.