Oracle函数listagg的使用示例

工作中经常遇到很多需求是这样的,根据条件汇总某些字段,比如我遇到的是,我们公司有三个投资平台,同一个客户拿手机号在三个平台都注册了,但注册过的用户名不一样,显示的时候需要根据手机号显示所有注册过的名称。

1、原始数据是这样的,如图:

2、要求显示成这样,如图:(其实就是列传行而已)

3、listagg具体实现是这样的,看完例子都能懂:

select phone, listagg(log_name, ',') within group(order by phone) logName
  from int_phone
 where phone = '13350162230'
 group by phone

4、需要注意的事项如下:

(1)  必须得分组,也就是说group  by是必须的。

(2)  listagg函数的第一个参数是需要显示的字段,也就是log_name;第二个参数是数值之间的分隔符;同时还需要进行排序和分组within group (order by name)

抛砖引玉

除了listagg之外,还有很多函数方法都能实现同样的效果,比如wm_concat函数等等

Oracle 行转列pivot 、列转行unpivot 的Sql语句总结


未经允许请勿转载:程序喵 » Oracle函数listagg的使用示例

点  赞 (1) 打  赏
分享到: