Можете да завъртите данните по този начин във всяка версия на Oracle.
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
Ако използвате 11g, можете също да използвате PVOT
оператор.
Ако обаче това е представително за вашия модел на данни, този вид модел на данни с атрибут на обект обикновено ще бъде доста неефективен. Като цяло бихте се обслужвали много по-добре с таблица, която има колони за name
, height
, awesomeness
и т.н.