select ei.EMPLOYEE_ID, if(ei.LAST_UPDATE_DT < per_eu.UPDATE_DT,per_eu.NEW_POSITION,ei.POSITION) as POSITION, if(ei.LAST_UPDATE_DT < per_eu.UPDATE_DT,per_eu.UPDATE_DT,ei.LAST_UPDATE_DT) as LAST_UPDATE_DT from EMPLOYEE_INFO as ei left join ( select a.EMPLOYEE_ID, a.UPDATE_DT, eu.NEW_POSITION from ( select EMPLOYEE_ID, max(UPDATE_DT) as UPDATE_DT from EMPLOYEE_UPDATE group by EMPLOYEE_ID )a left join EMPLOYEE_UPDATE as eu on a.EMPLOYEE_ID = eu.EMPLOYEE_ID and a.UPDATE_DT = eu.UPDATE_DT ) as per_eu on ei.EMPLOYEE_ID = per_eu.EMPLOYEE_ID order by ei.EMPLOYEE_ID