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

Rækker til kolonne i 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

hvis antallet af groupa er fastsat, ville forespørgslen ovenfor fungere.

Rediger:Brug af pivot

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

Tak for løsningen. Jeg er der næsten. Dette er hvad jeg får efter at have kørt denne forespørgsel. Faktisk er der 53 forskellige GRUPPER, så det tilføjer 53 kolonner, men det maksimale antal grupper, der er tildelt en bruger, er 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

Hvordan får jeg resultater som dette...

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

Hvordan får jeg mit resultat, som jeg nævnte i spørgsmålet? Tak,



  1. Tvetydighed i venstre-sammenføjninger (kun orakel?)

  2. adgangskodegodkendelse mislykkedes for brugerens ebroot elastic beanstalk

  3. Problem med JSON output accenter

  4. Sådan finder du alle overtrædelser af begrænsninger i en SQL Server-database