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

Righe a colonna 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

se il numero di groupa è corretto, la query sopra funzionerebbe.

Modifica:utilizzando pivot

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

Grazie per la soluzione. Sono quasi li. Questo è ciò che ottengo dopo aver eseguito questa query. In realtà ci sono 53 GRUPPI diversi, quindi vengono aggiunte 53 colonne ma il numero massimo di gruppi assegnati a un utente è 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

Come ottengo risultati come questo...

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

Come ottengo il mio risultato come ho menzionato nella domanda?Grazie,