Du kan pivotera data så här i vilken version av Oracle som helst.
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
Om du använder 11g kan du också använda PVOT
operatör.
Om detta dock är representativt för din datamodell kommer den typen av enhetsattributdatamodell i allmänhet att vara ganska ineffektiv. Du skulle generellt sett vara mycket bättre betjänt med en tabell som hade kolumner för name
, height
, awesomeness
osv.