ORACLE函数之LISTAGG

 

函数作用

在每个分组内,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根据工资分组,将工资相同的员工查询出来,并且根据入职时间排序,用逗号拼接

 

posted @   harara  阅读(1824)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示

目录导航