oracle中把多行記錄合併爲一行

遇到這麼一個問題oracle

id a b c d e
1 1 1 1 1 1
1 2 2 2 2 2
1 3 3 3 3 3
2 4 4 4 4 4
2 5 5 5 5 5
3 6 6 6 6 6
4 7 7 7 7 7
5 8 8 8 8 8
5 9 9 9 9 9


這是表結構,我想查詢出這樣的結果函數

id a b c d e
1 1,2,3 1,2,3 1,2,3 1,2,3 1,2,3
2 4,5 4,5 4,5 4,5 4,5
3 6 6 6 6 6
4 7 7 7 7 7
5 8,9 8,9 8,9 8,9 8,9


在oracle中有一個函數wm_concat,用這個函數就能夠了spa

select t.id,ci

wm_concat(t.a) a,it

wm_concat(t.b) b,table

wm_concat(t.c) c,test

wm_concat(t.d) d,select

wm_concat(t.e) e from table t group by t.id;im

然而,這個函數的侷限性在於,查出來的結果,字段類型是<clob>查詢

其實除了這個wm_concat函數以外,oracle中還提供了另外一個函數listagg,也能夠完成這樣的效果

select t.id,
       listagg(t.a, ',') within GROUP(order by t.a) a,
       listagg(t.b, ',') within GROUP(order by t.b) b
  from tmp_test t
 group by t.id

相關文章
相關標籤/搜索