Oracle
 sql >> база данни >  >> RDS >> Oracle

Редове към колона в 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

ако броят на groupa е фиксиран, горната заявка ще работи.

Редактиране:Използване на завъртане

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

Благодаря за решението. почти стигнах. Това е, което получавам след изпълнението на тази заявка. Всъщност има 53 различни ГРУПИ, така че се добавят 53 колони, но максималният брой групи, присвоени на потребител, е 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

Как да получа резултати като този...

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

Как да получа резултата си, както споменах във въпроса? Благодаря,



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Да се ​​обработват NULL стойности при четене през OracleDataReader?

  2. Използване на Oracle® Heterogeneous Services с два ODBC източника на данни

  3. Защо Oracle 10g не се оплаква от неяснота в колоните?

  4. Как да намеря разлика между стойностите на формата TIMESTAMP в Oracle?

  5. SELECT SUM връща ред, когато няма записи