需求:Oracle数据库,通过查询,将查询字段的该列结果用逗号拼接成一行。
1. 查询语法
select listagg('字段',',') within group (order by '字段') as '字段'
from 表名 where 条件
2. 示例对比:
2.1 原始查询结果
select emp_uid from PRS_CALC_DATA where agency_code='101002' and prtype_code='002'
2.2 用listagg函数查询之后的结果
select listagg(emp_uid,',') within group (order by emp_uid) as emp_uid
from PRS_CALC_DATA where agency_code='101002' and prtype_code='002'
3. 应用
给100个人计算工资,计算的后台接口统计的是工资编制表中每个人员对应的id值,故需要将该id值查询出来传给计算接口。实现如下:
3.1 查询语句
3.2 提取查询结果
3.3 传入查询结果
3.4 查看结果
*****************************************************************************************************************************************************************************************************************
如果不使用listagg函数,会只计算一个人的工资(因为只传入了一个id值)。示例如下:
*****************************************************************************************************************************************************************************************************************