sql >> Database >  >> RDS >> Oracle

Rijen naar kolom in 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

als het aantal groupa vast is, zou de bovenstaande vraag werken.

Bewerken:Draaipunt gebruiken

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

Bedankt voor de oplossing. Ik ben er bijna. Dit is wat ik krijg na het uitvoeren van deze query. Er zijn eigenlijk 53 verschillende GROEPEN, dus het voegt 53 kolommen toe, maar het maximale aantal groepen dat aan een gebruiker is toegewezen is 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

Hoe krijg ik zulke resultaten...

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

Hoe krijg ik mijn resultaat zoals ik in de vraag vermeldde? Bedankt,



  1. MYSQL UNION ONDERSCHEIDEN

  2. Nummer van bind_result breekt de array php

  3. Kopieer een tabel naar een andere tabel met een andere structuur

  4. PHPmailer - Meerdere e-mails versturen