LISTAGG 函数介绍
listagg 函数是 Oracle 11.2 推出的新特性。 其主要功能类似于 wmsys.wm_concat 函数, 即将数据分组后, 把指定列的数据再通过指定符号合并。
LISTAGG 使用
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 语句
1.使用条件查询 查询教室编码为200的学生列表
SELECT code,name FROM student where code = '200'
使用 listagg() WITHIN GROUP () 将多行合并成一行(比较常用)
SELECT
code,
listagg (NAME, ',') WITHIN GROUP (ORDER BY NAME) names
FROM
student
WHERE
code = '200'
GROUP BY
code
效果:
使用 listagg() within GROUP () over 将多行记录在一行显示(没有遇到过这种使用场景)
SELECT
code,
listagg (NAME, ',') WITHIN GROUP (ORDER BY NAME) over(PARTITION BY code)
FROM
student
WHERE
code = '200'
效果:
mysql相同效果的实现:mysql 数据库的GROUP_CONCAT()使用方法-CSDN博客