Oracle
 sql >> Base de données >  >> RDS >> Oracle

Lignes à colonne dans 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 le nombre de groupa est fixe, la requête ci-dessus fonctionnera.

Edit :Utilisation du pivot

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

Merci pour la solution. J'y suis presque. C'est ce que j'obtiens après avoir exécuté cette requête. En fait, il y a 53 GROUPES différents, donc cela ajoute 53 colonnes, mais le nombre maximum de groupes attribués à un utilisateur est de 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

Comment puis-je obtenir des résultats comme celui-ci...

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

Comment puis-je obtenir mon résultat comme je l'ai mentionné dans la question ? Merci,