2015-11-17 17 views
-1

我有一個「狀態歷史記錄」表,其中包含員工的工作狀態列表。我想要做的只是當他們的狀態值是「最新」時,獲取每個員工最新記錄的列表。SQL如果值爲「已選中」,則爲員工選擇最新記錄

到目前爲止,這是查詢我有僞代碼

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

添加表的定義,一些示例表數據和預期的結果! – jarlh

+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'; 
1

我認爲你正在尋找MAX()函數約翰。看看該定義如下:

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

考慮一些假設考慮在內:

比方說,你對EMP.EmployeeRecordsEmployeeRecordsID這是一個自動遞增標識列,以及作爲EmployeeName來區分不同的員工;以獲得最新的記錄,你會做下面的事情

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

這不是一個真正的答案。應該是一個評論,而不是。 – jarlh