Listagg関数とは...
指定した列の複数行の値を連結して1行にまとめることができる集計関数。
デリミタ(区切り記号)を指定することで、カンマ区切りなどでまとめることができます。
※戻り値は文字型
書式
LISTAGG(連結したい列, 'デリミタ') WITHIN GROUP (ORDER BY 連結順の基準列) 別名
引数 説明
連結したい列 連結にしたい列名を指定。
デリミタ 連結にする際の区切り記号を指定。
連結順の基準列 連結するときの順番を決める基準列を指定。
使用例
サンプルデータ
INSERT INTO listagg_sample (name, department, salary) VALUES
('高木', '営業部', 400,000),
('高橋', '開発部', 350,000),
('山田', '営業部', 390,000),
('佐藤', '管理部', 420,000),
('伊藤', '開発部', 340,000);
例)部門毎に名前をカンマ区切りで連結したい場合。
※名前の並び順は給料の高い順
select department, LISTAGG(name, ',') WITHIN GROUP (order by saraly desc nulls last) name from listagg_sample order by department;
実行結果
department name
管理部 佐藤
営業部 高木,山田
開発部 高橋,伊藤