1. 作用
可以实现行转列,将多列数据聚合为一列,实现数据的压缩
2. 语法
listagg(measure_expr,delimiter) within group ( order by order_by_clause);
解释:
measure_expr可以是基于任何列的表达式
delimiter分隔符,默认为NULL
order_by_clause决定了列值的拼接顺序
3. 实例
1)查询部门编号20的员工
--查询部门编号20的员工,按薪资排序
select deptno,ename,sal from emp where deptno=20 order by sal;
2)普通函数
按薪资排序,结果按逗号拼接
使用listagg() WITHIN GROUP () 将多行合并成一行
--使用listagg() WITHIN GROUP () 将多行合并成一行
select listagg(ename,',')within group(order by sal)name from emp where deptno=20;
3)分组排序
按部门分组,进行薪资求和。并列出人员清单,按薪资排序,并以,
连接汇总显示
select deptno,listagg(ename,',') within group(order by sal)name,sum(sal) from emp group by deptno;