oracle中实现某个字段的多个值融合成另一个字段的值并逗号隔开
1.场景复现
我现在有这样的数据(简单例子)
然后需求是变成这个样子
2.oracle实现sql
select DISTINCT
a.ID,
RTRIM(LISTAGG(to_char(b.UNIT_NAME), ',') WITHIN GROUP(ORDER BY b.UNIT_NAME)over (partition by a.ID ),'、')AS executeUnit
from TASK_ACTUAL_SEND a, TASK_SEND_UNIT b
where a.ID=b.TASK_ACTUAL_SEND_ID
执行结果:
3.涉及技术
我这里最主要是使用oracle中的RTRIM函数和LISTAGG函数,下边这段代码是核心的使用方式
RTRIM(LISTAGG(to_char(b.UNIT_NAME), ',') WITHIN GROUP(ORDER BY b.UNIT_NAME)over (partition by a.ID ),'、')AS executeUnit