Puoi trasformare i dati in questo modo in qualsiasi versione di 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
Se stai usando 11g, puoi anche usare il PVOT
operatore.
Se questo è rappresentativo del tuo modello di dati, tuttavia, quel tipo di modello di dati di attributo entità sarà generalmente piuttosto inefficiente. In genere verrai servito molto meglio con una tabella con colonne per name
, height
, awesomeness
, ecc.