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
、など。