SQL选择员工的最新记录,如果值为"已选择"

时间:2015-11-17 15:02:43

标签: sql

我有一个"状态历史"包含员工就业状况列表的表格。我想做的是获取每个员工最新记录的列表,当且仅当他们的状态值为"最新状态"。

到目前为止,这是我对伪代码的查询

SELECT * 
FROM EMP.EmployeeRecords
WHERE (THE LATEST STATUS RECORD) StatusValue = 'Up To Date'

2 个答案:

答案 0 :(得分:1)

我认为你正在寻找MAX()函数John。请看下面的定义:

https://msdn.microsoft.com/en-us/library/ms187751.aspx

考虑一些假设:

假设您在EmployeeRecordsID表上有一个EMP.EmployeeRecords,它是一个自动递增的标识列,另一个是EmployeeName来区分不同的员工;获取StatusValue = 'Up To Date'您将执行以下操作的最新记录

select 
  LatestID = MAX(EmployeeRecordsID)
  , EmployeeName
from EMP.EmployeeRecords
where StatusValue = 'Up To Date'
group by EmployeeName

答案 1 :(得分:1)

你的问题很糟糕。您应该拥有样本数据和所需的布局,以及使用您正在使用的数据库标记问题。

猜测数据的结构,这里有一个相关的子查询:

SELECT e.* 
FROM EMP.EmployeeRecords e
WHERE e.statusdate = (select max(e2.statusdate) 
                      from emp.EmployeeRecords e2
                      where e2.employeeid = e.employeeid
                     ) and
      e.StatusValue = 'Up To Date';