LISTAGGの基本構文 は:
LISTAGG(col_name_to_be_aggregated, ',') WITHIN GROUP (ORDER BY col)
あなたの場合、結果としてサブクエリがWM_CONCAT
に設定されているため 、col_name_to_be_aggregated
の代わりに同じサブクエリを配置できます LISTAGGで 。
すべての交換を取り除くこともできると思います 関数は、LISTAGGが区切り文字を受け入れることができるためです。 お好みの。
試してみてください
LISTAGG
(
CASE
WHEN ROW_NUMBER() OVER (PARTITION BY product_id,
product_detail_set_id,
registration_id,
product_family_id,
application_id,
package_Set_id,
legal_status
order by packset_country)=1 THEN
legal_status
ELSE
NULL
END), ',') WITHIN GROUP (ORDER BY required_col)
また、12cでLISTAGGに移行する必要がある理由を説明したいと思います。 tが最新の12cバージョンから削除されたため。したがって、WM_CONCAT関数に依存していたアプリケーションは、12cにアップグレードすると機能しなくなります。 WM_CONCATを使用しない理由を読むOracleで機能しますか?
11gより前のリリース2では、LISTAGGを使用できません。文字列の集計手法はたくさんあります。私の答えをご覧ください