sql >> Base de Datos >  >> RDS >> Oracle

Oracle SQL:toma de valores de varias filas

Puede pivotar los datos de esta manera en cualquier versión de 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 está usando 11g, también podría usar el PVOT operador.

Sin embargo, si esto es representativo de su modelo de datos, ese tipo de modelo de datos de atributo de entidad generalmente será bastante ineficiente. Por lo general, le serviría mucho mejor una tabla que tuviera columnas para name , height , awesomeness , etc.