Du kan pivotere data på denne måde i enhver version af 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
Hvis du bruger 11g, kan du også bruge PVOT
operatør.
Hvis dette dog er repræsentativt for din datamodel, vil den slags enhedsattributdatamodel generelt være ret ineffektiv. Du ville generelt være meget bedre tjent med en tabel, der havde kolonner for name
, height
, awesomeness
osv.