Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Linhas para Coluna no 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 o número de groupa for fixo, a consulta acima funcionaria.

Editar:usando pivô
 select * from
  (select name, id , groupa from tablename)
  pivot xml (
  max(groupa) for groupa in
   (select distinct groupa from tablename)
   )

Obrigado pela solução. Estou quase lá. Isso é o que recebo depois de executar esta consulta. Na verdade, existem 53 GRUPOS diferentes, portanto, estão adicionando 53 colunas, mas o número máximo de grupos atribuídos a um usuário é 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

Como ter resultados assim...
NAME      ID      GROUP_1  GROUP_2  GROUP_3
James     20      A        H
Michael   30      A        B        E

Como obtenho meu resultado conforme mencionei na pergunta?Obrigado,