< 중복제거 >
regexp_replace(LISTAGG(ACCT_ID, ',') WITHIN GROUP(ORDER BY ACCT_ID), '([^,]+)(,\1)+', '\1')
위 정규식을 이용하면 된다고 하는데...
실제 되긴 하지만
어떤 특정한 경우에는 잘 안되기도 한다.
그래서 찾은게 아래.
regexp_replace(LISTAGG(ACCT_ID, ',') WITHIN GROUP(ORDER BY ACCT_ID), '([^,]+)(,\1)*(,|$)', '\1\3')
이게 잘 통하지만 이것도 안통하는 경우가 있을 수 있지 않을까...?
<4000BYTE 초과 시 생략 >
regexp_replace(LISTAGG(ACCT_ID, ',' ON OVERFLOW TRUNCATE '후략' WITH COUNT) WITHIN GROUP(ORDER BY ACCT_ID), '([^,]+)(,\1)*(,|$)', '\1\3')
TRUNCATE 뒤의 '후략' 은 생략된 부분을 보여주기 위해 추가한 문자이나 '후략' 없어도 됨
WITH COUNT는 생략된 ROW수를 표시해줌