Vous pouvez faire pivoter les données comme celle-ci dans n'importe quelle version d'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 vous utilisez 11g, vous pouvez également utiliser le PVOT
opérateur.
Si cela est représentatif de votre modèle de données, ce type de modèle de données entité-attribut sera généralement plutôt inefficace. Vous seriez généralement bien mieux servi avec une table qui avait des colonnes pour name
, height
, awesomeness
, etc.