工做中常常遇到不少需求是這樣的,根據條件彙總某些字段,好比我遇到的是,咱們公司有三個投資平臺,同一個客戶拿手機號在三個平臺都註冊了,但註冊過的用戶名不同,顯示的時候須要根據手機號顯示全部註冊過的名稱。(我用的是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)排序