玩转ORACLE函数:如何使用LISTAGG?
最编程
2024-08-08 12:29:53
...
函数作用
在每个分组内,LISTAGG根据order by 对列值进行排序,将排序后的结果拼接起来
函数语法
即:LISTAGG( [ALL] measure_expr [,'delimiter' [,listagg_overflow_clause] ] ) [ WITH GROUP (order_by_clause) [ OVER query_partion_clause] ]
说明:[]内表示是可选的
参数解释:
- ALL:ALL关键字是可选的
- measure_expr:是被操作的列,可以是任何基于列的表达式,列中空值将被忽略
- delimiter:可选的,分隔符,拼接每个列值。默认值为NULL
- listagg_overflow_clause:可选的,这个子句控制当返回值超过返回数据类型的最大长度时函数的行为。
- order_by_clause:排序子句,决定被连接值的顺序
- query_partion_clause:略,可搜索oracle分析函数【over(partition by...)】来了解
函数使用示例
1、sql脚本
create table salaryTable ( id int primary key, name varchar(32) DEFAULT ' ', salary varchar(32) DEFAULT ' ', entryTime TIMESTAMP(6) DEFAULT SYSTIMESTAMP ); insert into salaryTable(id,name,salary,entryTime) values(1,'张三','5000',to_date('20181212','yyyymmdd')); insert into salaryTable(id,name,salary,entryTime) values(2,'李四','6000',to_date('20191119','yyyymmdd')); insert into salaryTable(id,name,salary,entryTime) values(3,'王五','5000',to_date('20160212','yyyymmdd')); insert into salaryTable(id,name,salary,entryTime) values(4,'harara','8000',to_date('20110301','yyyymmdd'));
2、使用LISTAGG函数进行查询
2.1根据工资分组,将工资相同的员工查询出来,用逗号拼接
SELECT LISTAGG(NAME,','),salary FROM salaryTable GROUP BY salary;
2.2根据工资分组,将工资相同的员工查询出来,并且根据入职时间排序,用逗号拼接
推荐阅读
-
如何正确使用Matlab中的fftshift函数
-
oracle常用函数使用大全 Oracle除法
-
如何在uni-app中使用微信小程序云函数
-
如何在C语言中找出100以内所有素数并每行打印10个?使用函数prime(m)来判断一个数是否为素数,并返回1或0的结果
-
玩转C语言!带你了解rand函数的使用技巧
-
在C语言中,如何通过主函数调用子函数并使用其变量?
-
如何使用C语言找到最大值(函数方法)
-
在C语言中,如何使用另一个文件中的函数?
-
oracle的 listagg WITHIN GROUP 函数使用
-
理解Oracle的listagg函数:将多行数据按顺序合并为字符串(与wm_concat的不同之处)