Oracle LISTAGG関数:重複除去のテクニック

Oracleでは、LISTAGG関数を使用する際に重複値を削除するためのさまざまな方法があります。以下は一般的な方法のいくつかです:

  1. サブクエリとROW_NUMBER()関数の使用:
SELECT LISTAGG(column_name, ',') WITHIN GROUP (ORDER BY column_name) AS result
FROM (
    SELECT column_name, ROW_NUMBER() OVER (PARTITION BY column_name ORDER BY column_name) rn
    FROM table_name
)
WHERE rn = 1;
  1. グループ化子句を使用する:
SELECT LISTAGG(DISTINCT column_name, ',') WITHIN GROUP (ORDER BY column_name) AS result
FROM table_name;
  1. CONNECT BY句を使用します。
SELECT LISTAGG(column_name, ',') WITHIN GROUP (ORDER BY column_name) AS result
FROM (
    SELECT column_name, ROW_NUMBER() OVER (PARTITION BY column_name ORDER BY column_name) rn
    FROM table_name
)
START WITH rn = 1
CONNECT BY PRIOR column_name = column_name AND PRIOR rn = rn-1;

具体のニーズに応じて適切な方法を選択して重複値を削除することができます。

bannerAds