ORACLE DATABASE 12c SQL基礎(1Z0-061)の試験範囲でもある、
LISTAGG(リスタッグ)関数の使用方法を紹介します。
目次
LISTAGG(リスタッグ)関数とは
LISTAGG関数を使うと、指定した列の複数行の値を連結して1行にまとめることができます。
デリミタ(区切り記号)を指定することで、カンマ区切りなどでまとめることが可能です。
戻り値は文字型です。
LISTAGG関数の書式
LISTAGG(連結したい列, 'デリミタ') WITHIN GROUP (ORDER BY 連結順の基準列)
引数 | 説明 |
---|---|
連結したい列 | 連結にしたい列名を指定します。 |
デリミタ | 連結にする際の区切り記号を指定します。 |
連結順の基準列 | 連結するときの順番を決める基準列を指定します。 |
LISTAGG関数では、指定した列の複数行の値をORDER BYで指定した基準で並び替えて、連結します。
LISTAGG関数の使用例
以下のテーブルを使って「LIATAGG関数」の動作を確認してみましょう。
NAME列の値をID列の順番で連結するSQLを試してみましょう。
SELECT LISTAGG(NAME,',') WITHIN GROUP (ORDER BY ID) FROM TEST6;
SQLの結果
NAME列の値をDEPARTMENT_ID列の順番で連結するSQLを試してみましょう。
SELECT LISTAGG(NAME,',') WITHIN GROUP (ORDER BY DEPARTMENT_ID) FROM TEST6;
SQLの結果
COUNTRY_CDごとのNAME列の値を連結するSQLを試してみましょう。
SELECT LISTAGG(NAME,',') WITHIN GROUP (ORDER BY ID) FROM TEST6 GROUP BY COUNTRY_CD;
SQLの結果
SELECT COUNTRY_CD,LISTAGG(NAME,',') WITHIN GROUP (ORDER BY ID) FROM TEST6 GROUP BY COUNTRY_CD;
SQLの結果