떠오른대로 해봤는데 되긴하네요.. 다른 방법이 있으면 알려주세요.
with t as ( select '홍길동' nm from dual union all select '홍길동' from dual union all select '김철수' from dual union all select '이순신' from dual ) select case when count(*) over (partition by nm) > 1 then nm||'_'||row_number() over (partition by nm order by null) else nm end from t