作用
可以实现将多行记录聚合为一列记录,实现数据的压缩
官方文档的解释如下:
For a specified measure, LISTAGG
orders data within each group specified in the ORDER
BY
clause and then concatenates the values of the measure column.
语法
listagg(measure_expr,delimiter) within group ( order by order_by_clause);
解释:measure_expr可以是基于任何列的表达式
delimiter分隔符,默认为NULL
order_by_clause决定了列值的拼接顺序
表示例如下
普通查询,不使用聚合函数
select listagg(name,'+') within group (order by name ) from product
以 + 拼接 , 注意如果 拼接的数据过大会报 ORA-01489: 字符串连接的结果过长
group by分组查询
select listagg(name,'+') within group (order by name ) as many from product group by TYPE