在员工数据库中,我需要每个员工的最新记录,该记录也等于或小于今天。
这是我所拥有的:
SELECT * FROM WA
INNER JOIN (SELECT
[Employee]
,MAX(Start_Date) as StartDate
FROM WA
GROUP BY [Employee] HAVING MAX(Start_Date) <= GETDATE() ) as WA2 on WA.Employee = WA2.Employee AND WA.Start_Date = WA2.StartDate
出于测试目的,该表目前只有一名员工,但结果没有显示任何记录,因为最大开始日期是未来(1 月 19 日)。我希望它显示今天或之前的最新开始日期,即 12 月 15 日。
您可以使用
TOP
SELECT TOP (1)
e.*,
WA.*
FROM Employee e
JOIN WA ON WA.Employee = e.Employee AND WA.Start_Date = e.StartDate
WHERE e.Id = PutIDHere
AND e.Start_Date <= GETDATE()
ORDER BY
e.StartDate DESC;
如果您需要多名员工,请使用行编号方法。