sql >> Databasteknik >  >> RDS >> Oracle

Rader till kolumn 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

om antalet groupa är fixat skulle frågan ovan fungera.

Redigera:Använd pivot

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

Tack för lösningen. Jag är nästan där. Detta är vad jag får efter att ha kört den här frågan. Det finns faktiskt 53 olika GRUPPER så det läggs till 53 kolumner men maximalt antal grupper som tilldelas en användare är 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

Hur får jag sådana här resultat...

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

Hur får jag mitt resultat som jag nämnde i frågan? Tack,



  1. SUMMA med en pivot för att beräkna totalpoäng

  2. json_encode förvandlar array till ett objekt

  3. Vad är problemet med att ta bort en rad från databasen?

  4. Konvertera Unix-tidsstämpel till läsbart datum med hjälp av MySQL