工做中常常遇到不少需求是这样的,根据条件汇总某些字段,好比我遇到的是,咱们公司有三个投资平台,同一个客户拿手机号在三个平台都注册了,但注册过的用户名不同,显示的时候须要根据手机号显示全部注册过的名称。(我用的是Oracle数据库)mysql
一、原始数据是这样的,如图:sql
二、要求显示成这样,如图:数据库
我查了一下oracle函数,这个listagg函数就能够知足它,在网上看了看,都是介绍listagg这个函数的使用方法,看起来真费劲,因而在这里我简明扼要的说明一下oracle
三、具体实现是这样的,也就不废话,看完例子都能懂:函数
select phone, listagg(log_name, ',') within group(order by phone) logName
from int_phone
where phone = '13350162230'
group by phone.net
四、须要注意的事项以下:
(1). 必须得分组,也就是说group by是必须的。
(2). listagg函数的第一个参数是须要显示的字段,也就是log_name;第二个参数是数值之间的分隔符;同时还须要进行排序和分组within group (order by name)排序