Oracle11.2新特性之列轉行函數listagg

listagg函數使用方法就像聚合函數一樣,通過Group by語句,把每個Group的一個字段,拼接起來,如:

學生表(t_student):
id name
1 小明
2 小紅

課程表(t_course):
id student_id name
1 1 語文
2 1 數學
3 2 語文

現在要想關聯兩張表顯示結果如下:
姓名 所選課程
小明 語文,數學
小紅 語文

則可以使用listagg函數:

select  s.name as 姓名,listagg(c.name,',') with group(order by c.name) as 所選課程
from t_student s
right join t_course c on s.id = c.student_id
group by s.name

listagg最基礎的用法
LISTAGG(列轉行字段,連接符) WITHIN GROUP( ORDER BY 連接排序)

發佈了57 篇原創文章 · 獲贊 12 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章