listagg 函数有两个参数:
1、 要合并的列名
2、 ⾃定义连接符号
☆LISTAGG 函数既是分析函数,也是聚合函数
所以,它有两种⽤法:
1、分析函数,如: row_number()、rank()、dense_rank() 等,⽤法相似
listagg(合并字段, 连接符) within group(order by 合并的字段的排序) over(partition by 分组字段)
2、聚合函数,如:sum()、count()、avg()等,⽤法相似
listagg(合并字段, 连接符) within group(order by 合并字段排序) --后⾯跟 group by 语句
⼀部分聚合函数其实也可以写成分析函数的形式。
分析函数和聚合函数本质上都是对数据进⾏分组,⼆者最⼤的不同便是:
对数据进⾏分组分组之后,
聚合函数只会每组返回⼀条数据,
⽽分析函数会针对每条记录都返回,
⼀部分分析函数还会对同⼀组中的数据进⾏⼀些处理(⽐如:rank() 函数对每组中的数据进⾏编号);
还有⼀部分分析函数不会对同⼀组中的数据进⾏处理(⽐如:sum()、listagg()),这种情况下,分析函数返回的数据会有重复的,distinct 处理之后的结果与
对应的聚合函数返回的结果⼀致。
with test as(
SELECT 'SNO-0010210' S_NO,'1002' ITEM_NO,'BruceLiu' CUS_NAME,'15632148754' TEL,'深圳' ADDRESS FROM DUAL
UNION
SELECT 'SNO-0010210' S_NO,'1003' ITEM_NO, 'CandySun' CUS_NAME,'19745233214' TEL, '南京' ADDRESS FROM DUAL
UNION
SELECT 'SNO-0010211' S_NO, '1003' ITEM_NO,'QianSan' CUS_NAME,'19745233214' TEL,'南京' ADDRESS FROM DUAL
UNION
SELECT 'SNO-0010212' S_NO,'1005' ITEM_NO,'HuiClear' CUS_NAME,'19745233214' TEL,'⽩银' ADDRESS FROM DUAL
UNION
SELECT 'SNO-0010212' S_NO,'1007' ITEM_NO,'CatBool' CUS_NAME,'19745233214' TEL,'重庆' ADDRESS FROM DUAL
UNION
SELECT 'SNO-0010212' S_NO,'1004' ITEM_NO,'Liability' CUS_NAME,'18812436214' TEL,'成都' ADDRESS FROM DUAL
)
评论0
最新资源