Puede pivotar los datos de esta manera en cualquier versión de 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
Si está usando 11g, también podría usar el PVOT
operador.
Sin embargo, si esto es representativo de su modelo de datos, ese tipo de modelo de datos de atributo de entidad generalmente será bastante ineficiente. Por lo general, le serviría mucho mejor una tabla que tuviera columnas para name
, height
, awesomeness
, etc.