Oracle LISTAGG関数
カラムの値を連結する時にはLISTAGG関数を使う
例として下記テーブルを準備
SQL> select * from employee;
ID NAME ADMIN_FLAG
--- ---------- ----------
1 ryotsu 0
2 nakagawa 1
3 akimoto 1
SQL> select * from manager;
ID ADMIN_FLAG CLASS_NAME
--- ---------- --------------------
1 0 一般
2 1 管理
■基本構文
listagg(カラム名, '区切り文字') within group (order by ソートしたいカラム名 ※無ければnull)
【使用例】
「CLASS_NAME」でグループ分けをして「NAME」をスラッシュで連結する場合
SQL> select
2 m.class_name
3 , listagg(e.name, '/') within group (order by e.name) as concat
4 from
5 employee e join manager m
6 on e.admin_flag = m.admin_flag
7 group by
8 m.class_name;
CLASS_NAME CONCAT
-------------------- ------------------------------
一般 ryotsu
管理 akimoto/nakagawa