Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle SQL – Erfassen von Werten aus mehreren Zeilen

Sie können die Daten in jeder Version von Oracle auf diese Weise pivotieren.

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

Wenn Sie 11g verwenden, können Sie auch PVOT verwenden Betreiber.

Wenn dies jedoch repräsentativ für Ihr Datenmodell ist, wird diese Art von Entitätsattribut-Datenmodell im Allgemeinen ziemlich ineffizient sein. Im Allgemeinen wären Sie viel besser mit einer Tabelle bedient, die Spalten für name enthält , height , awesomeness usw.