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

Транспониране и агрегиране на данни от колони на Oracle

Можете да използвате listagg() функция за анализ на прозорец два пъти като

with t1( Base, End ) as
( 
 select 'RMSA','Item 1' from dual union all
 select 'RMSA','Item 2' from dual union all 
 select 'RMSA','Item 3' from dual union all
 select 'RMSB','Item 1' from dual union all
 select 'RMSB','Item 2' from dual union all
 select 'RMSC','Item 4' from dual 
),
   t2 as
(   
select 
       listagg(base,';') within group (order by end) 
       as key,
          end   
  from t1
 group by end 
)
select key, 
       listagg(end,',') within group (order by end) 
       as Products
  from t2  
 group by key
 order by products;

Key           Products
---------     --------------
RMSA;RMSB     Item 1, Item 2
RMSA          Item 3
RMSC          Item 4  

Демо



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да задам LINESIZE и PAGESIZE със заместваща променлива?

  2. Създаване на CSV файл на Loop | PLSQL Oracle SQL разработчик

  3. Oracle Natural Joins и Count (1)

  4. Как да се свържете с Oracle като SYS от SQL*Plus в Java

  5. Защо получавам #### в колоната NUMBER след форматиране?