工作中经常遇到客户提出这样的需求,希望在汇总合并中,能够把日期逐个枚举出来。
如图,原始数据是这样的:
客户希望能够实现这样的汇总合并:
那么通常我会使用listagg这个函数,但是好多网上都是系统的全面的介绍listagg这个函数的使用方法,看起来很费力气。在这里我简明扼要的说明一下
实现这个需求的语句是这样的:
select name,
listagg(ddate,' / ') within group (order by name) as ddate
from aa
group by name
需要注意的事项如下:
1. 必须得分组,也就是说group by是必须的。
2. listagg函数的第一个参数是需要进行枚举的字段,也就是ddate;第二个参数是枚举数值之间的分隔符;同时还需要进行排序和分组within group (order by name)