listagg
1. 語法:
listagg(measure_expr, 'delimiter') within group (order by expr) [over (partition by expr)]
2. 功能說明:
measure_expr:任何基於列的表達式
delimiter:分割符
order by expr:決定被拼接的順序
over (partition by expr): 表中所有內容按照expr進行分區處理
3. 【示例1】:
create or replace view v as( select 500 population, 'China' nation ,'Guangzhou' city from dual union all select 1500 population, 'China' nation ,'Shanghai' city from dual union all select 500 population, 'China' nation ,'Beijing' city from dual union all select 1000 population, 'USA' nation ,'New York' city from dual union all select 500 population, 'USA' nation ,'Bostom' city from dual union all select 500 population, 'Japan' nation ,'Tokyo' city from dual ); select v.population, v.nation, listagg(v.city, ',') within group (order by city) over (partition by nation) as rank from v;
結果:
【示例2】:
create or replace view v as( select 500 population, 'China' nation ,'Guangzhou' city from dual union all select 1500 population, 'China' nation ,'Shanghai' city from dual union all select 500 population, 'China' nation ,'Beijing' city from dual union all select 1000 population, 'USA' nation ,'New York' city from dual union all select 500 population, 'USA' nation ,'Bostom' city from dual union all select 500 population, 'Japan' nation ,'Tokyo' city from dual ); select v.nation, listagg(v.city, ',') within group (order by city) as rank from v group by nation;
注:listagg在這里啟動匯總的作用。sum將數值結果加在一起,而listagg是把字符串連接在一起。