LISTAGGを使って検索結果を横並びで出力させるサンプルです。
たま~にSQLの検索結果を横並びで出力したいことがあるので、シンプルなサンプルSQLをのせておきます。
通常の縦並びで検索結果を出力
-- 部署毎、名前毎で結果を出力する
SELECT
DEPT
,NAME
FROM
TB_SAMPLE
GROUP BY
DEPT
,NAME
ORDER BY
DEPT
,NAME
;
DEPT NAME
--------- --------
人事部 かとう
人事部 やまだ
管理部 きむら
管理部 さとう
LISTAGGを使って横並びで検索結果を出力
-- 部署毎で1レコード出力し、名前は横並びでカンマを付けて出力する
SELECT
DEPT
, LISTAGG(NAME, ',')
WITHIN GROUP (ORDER BY NAME) NAME
FROM
TB_SAMPLE
GROUP BY
DEPT
;
DEPT NAME
--------- ----------------
人事部 かとう,やまだ
管理部 きむら,さとう
LISTAGGの第1引数に横並びで出力したい項目を指定して、第2引数に区切り文字を指定します。そして、WITHIN GROUP で横並び項目の出力順を指定します。最後にGROUP BYを使って部署(DEPT)毎で結果を出力させています。