SELECT fk_userid,
MAX(dEffectiveTime) as dEffectiveTime
FROM HR_Salary_T_ChangeHistory
GROUP BY FK_UserID
上述就是查询日期最新一条的所有人的最近一条记录,但是如果生效日期有重复的,那么这样写就不行,就需要再写一层如下:
select max(pk_id),c.fk_userid from HR_Salary_T_ChangeHistory c inner join (SELECT fk_userid,
MAX(dEffectiveTime) as dEffectiveTime
FROM HR_Salary_T_ChangeHistory
where 1=1
GROUP BY FK_UserID) as temp on temp.dEffectiveTime=c.dEffectiveTime and c.fk_userid=temp.fk_userid
group by c.fk_userid