如何查找记录的最近日期以及 <= today's date [duplicate]

问题描述 投票:0回答:1

在员工数据库中,我需要每个员工的最新记录,该记录也等于或小于今天。

这是我所拥有的:

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 日。

sql sql-server
1个回答
-1
投票

您可以使用

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;

如果您需要多名员工,请使用行编号方法。

© www.soinside.com 2019 - 2024. All rights reserved.