단순히 컬럼별로 중복제거 한다면 아래처럼 하면 될듯합니다.
SELECT LISTAGG(parts, ',') WITHIN GROUP (ORDER BY parts) list FROM ( SELECT DISTINCT(REPLACE(REGEXP_SUBSTR(txt, '[^,]+', 1, level),'''','')) AS parts FROM test2 WHERE txt like '''사과%''' CONNECT BY REGEXP_SUBSTR(txt, '[^,]+', 1, level) IS NOT NULL );
먼저 컬럼은 행으로 바꾸서 중복제거후 LISTAGG 함수 사용하시면 될것같네요.