sql >> Base de Datos >  >> RDS >> Oracle

Filas a Columna en 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

si el número de grupos es fijo, la consulta anterior funcionaría.

Editar:Usando pivote

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

Gracias por la solución. Ya casi estoy allí. Esto es lo que obtengo después de ejecutar esta consulta. En realidad, hay 53 GRUPOS diferentes, por lo que se agregan 53 columnas, pero el número máximo de grupos asignados a un usuario es 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

¿Cómo obtengo resultados como este...

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

¿Cómo obtengo mi resultado como mencioné en la pregunta?Gracias,