with tmp as( select EMPLOYEE_ID, UPDATE_DT, NEW_POSITION from( select EMPLOYEE_ID, rank() over(partition by EMPLOYEE_ID order by UPDATE_DT desc) rk, UPDATE_DT, NEW_POSITION from EMPLOYEE_UPDATE )a where rk =1 ) select t.EMPLOYEE_ID, if(UPDATE_DT>LAST_UPDATE_DT,NEW_POSITION,POSITION) POSITION, if(...