with eu as (select EMPLOYEE_ID ,
    UPDATE_DT,
    row_number() over(partition by EMPLOYEE_ID order by UPDATE_DT desc) as rk,
    NEW_POSITION 
from EMPLOYEE_UPDATE)
select EMPLOYEE_ID,
    case when UPDATE_DT > LAST_UPDATE_DT then NEW_POSITION else POSITION end as POSITION,
    case when UPDATE_DT > LAST_UPDATE_DT then UPDATE_DT else LAST_UPDATE_DT end as LAST_UPDATE_DT
from EMPLOYEE_INFO ei
inner join eu
    using(EMPLOYEE_ID)
where rk = 1
order by EMPLOYEE_ID