oracle中实现某个字段的多个值融合成另一个字段的值并逗号隔开

oracle中实现某个字段的多个值融合成另一个字段的值并逗号隔开

1.场景复现
我现在有这样的数据(简单例子)
oracle中实现某个字段的多个值融合成另一个字段的值并逗号隔开_第1张图片
然后需求是变成这个样子
oracle中实现某个字段的多个值融合成另一个字段的值并逗号隔开_第2张图片
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

执行结果:
oracle中实现某个字段的多个值融合成另一个字段的值并逗号隔开_第3张图片
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

你可能感兴趣的:(oracle,数据库,sql)