1. 程式人生 > >oracle listagg和wm_concat函式

oracle listagg和wm_concat函式

https://blog.csdn.net/kancy110/article/details/74616909

對於將一列多值合併成一行問題,oracle提供了wmsys.wm_concat和listagg函式處理此問題,下面我們以emp表中資料為例,看看兩函式的使用方法

假設我們需要統計每種job下面有哪些員工,要求在一行顯示員工姓名,首先看看emp表中的資料:


①利用listagg函式處理


②利用wm_concat函式處理


wm_concat函式作用:除了處理多行合併問題,還給我們直接根據某個表的欄位建立檢視帶來方便


③注意分析函式中的partition by 與group by 的區別

下面我們看看在分析函式中寫partition by 與上述結果的有什麼不同效果


注意點1:我們會發現pratition by 這種情況下,ename值確實進行了合併,但記錄數並沒有去重

下面我們再以sum分析函式中寫order by時,看看其效果


注意2:此時是在job粒度上,根據order by 中的順序做的累積