Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wiersze do kolumny w 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

jeśli liczba grup jest ustalona, ​​powyższe zapytanie zadziała.

Edycja:za pomocą osi

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

Dzięki za rozwiązanie. Jestem prawie na miejscu. Oto, co otrzymuję po uruchomieniu tego zapytania. W rzeczywistości istnieją 53 różne GRUPY, więc dodaje 53 kolumny, ale maksymalna liczba grup przypisanych do użytkownika to 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

Jak uzyskać takie wyniki...

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

Jak uzyskać wynik, o którym wspomniałem w pytaniu? Dzięki,



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. blok plsql, aby uzyskać dynamiczny wynik zapytania sql

  2. Wygeneruj losową datę w Oracle za pomocą DBMS_RANDOM

  3. Użyj gv$session, aby sprawdzić, czy zapytanie się zawiesza

  4. zapytanie, aby zignorować zduplikowane/null rekordy

  5. Klonuj ORACLE_HOME