若要获取Trans
表最新TransDate
(SQL Fiddle)的最后一个记录:
SELECT TOP(1) e.EmployeeID, e.EmpShortID, t.ExecutionFlag, t.TransDate
FROM Employee AS e
INNER JOIN Trans AS t ON t.Employee = e.EmpShortID
WHERE t.ExecutionFlag = 0
ORDER BY t.TransDate DESC
编辑,拿到最后一个记录在Trans
表对每个员工的最新TransDate
(SQL Fiddle ):
SELECT e.EmployeeID, e.EmpShortID, t.ExecutionFlag, MAX(t.TransDate)
FROM Employee AS e
INNER JOIN Trans AS t ON t.Employee = e.EmpShortID
WHERE t.ExecutionFlag = 0
GROUP BY e.EmployeeID, e.EmpShortID, t.ExecutionFlag
EDIT,下面的QUER y检索Trans
表中的最后一条记录,其中最新的TransDate
表示每位员工,而不考虑ExecutionFlag
。然后,它需要这些结果和拉只记录其中ExecutionFlag =0
(SQL Fiddle):
SELECT m.*
FROM
(
SELECT e.EmployeeID, e.EmpShortID, MAX(t.TransDate) AS MaxTransDate
FROM Employee AS e
INNER JOIN Trans AS t ON t.Employee = e.EmpShortID
GROUP BY e.EmployeeID, e.EmpShortID
) AS m
INNER JOIN Trans AS tm ON
m.EmpShortID = tm.Employee AND
m.MaxTransDate = tm.TransDate
WHERE tm.ExecutionFlag = 0
我不确定确切的SQL Server语法是什么,但是您可以通过“Order by TransDate DESC LIMIT 1”获取最新记录。 –
@ChrisForrence LIMIT 1是MySQL语法,在SQL Server中使用'SELECT'子句中的'Top 1'。 – FrankPl
@FrankPl - 啊,谢谢。现在我很高兴我没有做出答案,是错的;) –