直接上sql
第一种将重复值全部替换,这里的重复字段为TERMINATION_DATE
WITH TEMP AS ( --查询要查出的所有字段
SELECT EMP_ID,FULL_NAME,TERMINATION_DATE,LAST_UPDATE_DATE,DIV_CODE
FROM ML_ATT_TERMINATION_EMP ),
TEMP2 AS ( --按照重复的字段统计出现的次数
SELECT TERMINATION_DATE,count(TERMINATION_DATE) nmOfOcc
FROM ML_ATT_TERMINATION_EMP group by TERMINATION_DATE)
select temp.EMP_ID,
temp.FULL_NAME,
case
when temp2.nmOfOcc > 1 then --字段出现的次数大于1次,替换值
sysdate
else
temp.TERMINATION_DATE
end TERMINATION_DATE
from temp
left join temp2
on temp.TERMINATION_DATE = temp2.TERMINATION_DATE
;
第二种将部分重复值替换,留其中一个值
select EMP_ID,FULL_NAME,
case when rn = '1' then
TERMINATION_DATE
else sysdate
end TERMINATION_DATE
from (
select row_number() over(PARTITION by TERMINATION_DATE ORDER BY EMP_ID ) as rn,temp.* from
(select
EMP_ID,FULL_NAME,TERMINATION_DATE
from ML_ATT_TERMINATION_EMP
)temp
)
;