SQL

LISTAGG

  • このエントリーをはてなブックマークに追加

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

  • このエントリーをはてなブックマークに追加

コメントを残す

*