Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle SQL:acquisizione di valori da più righe

Puoi trasformare i dati in questo modo in qualsiasi versione di 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

Se stai usando 11g, puoi anche usare il PVOT operatore.

Se questo è rappresentativo del tuo modello di dati, tuttavia, quel tipo di modello di dati di attributo entità sarà generalmente piuttosto inefficiente. In genere verrai servito molto meglio con una tabella con colonne per name , height , awesomeness , ecc.