Oracleでのwm_concatの使用が無効です。どうやって解決すればいいですか?

Oracleは11g以降、wm_concat関数を廃止したため、より新しいバージョンでは直接その関数を使用することができません。

複数の行のデータを1つの文字列に結合したい場合は、LISTAGG関数を使用することができます。LISTAGG関数の構文は以下の通りです:

LISTAGG(column_name, separator) WITHIN GROUP (ORDER BY column_name)

column_nameを繋げる列の名前、separatorは繋げる際の区切り文字です。特定の列で並び替えが必要な場合は、WITHIN GROUP (ORDER BY column_name)句を使用できます。以下はLISTAGG関数を使用した例です:

SELECT department_id, LISTAGG(employee_name, ',') WITHIN GROUP (ORDER BY employee_name)
FROM employees
GROUP BY department_id;

もし古いOracleバージョンを使用している場合は、XMLAGG関数やカスタム関数などを使用して文字列を結合する他の方法を検討することもできます。

bannerAds