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)毎で結果を出力させています。