在Oracle的select查詢中,我們經常遇到將結果進行分組,某個字段按照分組用逗號隔開,拼接成一行顯示,如下:
A B
a 1
a 2
b 3
b 4
A、B兩列是查詢結果,現要展示成如下:
A B
a 1,2
b 3,4
可以使用listagg函數:
select A,listagg(B,',') within group (order by B) as B from table group by A
如果將select出來的一列全部轉成行,那么group by語句都不需要:
select listagg(B,',') within group (order by B) as B from table
結果是 1,2,3,4
而且這個listagg函數可以放在查詢語句的子查詢里面,很方便
select id,loginid, (select listagg(h1.id,',') within group (order by h1.id) from hrmresource h1 where h1.managerid = h.id) str from hrmresource h