下面是我的表结构及数据:
ID Date EmpId
67 2015-08-24 10:44:33.087 293
68 2015-08-24 10:41:49.950 293
69 2015-08-24 10:42:49.951 293
70 2015-08-24 10:45:15.157 013
71 2015-08-24 10:46:33.131 013
72 2015-08-24 10:42:33.134 013
73 2015-08-24 10:47:33.136 013
ID列是自动生成的列。 每位员工有2条或2条以上的记录。在这种情况下。 EmpId - 293有三条记录。 013共有4条记录。我正在寻找一个查询来返回每个员工的最大日期记录。在这种情况下,结果应如下所示:
ID Date EmpId
69 2015-08-24 10:44:33.087 293
73 2015-08-24 10:47:33.136 013
我的要求是返回结果集中的所有3列。
答案 0 :(得分:3)
select ID,Date,EMPID
from (
select ID, Date, EMPId, ROW_NUMBER() over (partition by EMPId order by Date desc) as RowNUm
from Employee
) A
where RowNUm = 1
答案 1 :(得分:0)
此查询对我有用:
SELECT
t.ID, t._Date, t.EmpId
FROM test t
LEFT JOIN test t_theta
ON t.EmpId = t_theta.EmpId
AND t._Date < t_theta._Date
WHERE
t_theta.ID IS NULL
基本上,您使用theta join将表连接到自身。然后,您将其限制为返回第一个表中的记录,其中第二个表中的该员工ID没有更大的日期。享受!