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

Zeilen zu Spalten in ORACLE

select name,id, 
 max(case when groupa = 'A' then groupa end) as group1,
  max(case when groupa = 'B' then groupa end) as group2,
  max( case when groupa = 'C' then groupa end) as group3
   from tablename
   group by name, id

wenn die Anzahl der Gruppen festgelegt ist, würde die obige Abfrage funktionieren.

Bearbeiten:Mit Pivot

 select * from
  (select name, id , groupa from tablename)
  pivot xml (
  max(groupa) for groupa in
   (select distinct groupa from tablename)
   )

Danke für die Lösung. Ich bin fast da. Dies ist, was ich bekomme, nachdem ich diese Abfrage ausgeführt habe. Tatsächlich gibt es 53 verschiedene GRUPPEN, also werden 53 Spalten hinzugefügt, aber die maximale Anzahl von Gruppen, die einem Benutzer zugewiesen werden, beträgt 5.

NAME      ID      A      B      C     D      E      F      G      H
James     20      A      null   null  null   null   null   null   H
Michael   30      A      B      null  null   E      null   null   null

Wie bekomme ich solche Ergebnisse...

NAME      ID      GROUP_1  GROUP_2  GROUP_3
James     20      A        H
Michael   30      A        B        E

Wie erhalte ich mein Ergebnis, wie ich es in der Frage erwähnt habe?Danke,