我有一個「狀態歷史記錄」表,其中包含員工的工作狀態列表。我想要做的只是當他們的狀態值是「最新」時,獲取每個員工最新記錄的列表。SQL如果值爲「已選中」,則爲員工選擇最新記錄
到目前爲止,這是查詢我有僞代碼
SELECT *
FROM EMP.EmployeeRecords
WHERE (THE LATEST STATUS RECORD) StatusValue = 'Up To Date'
我有一個「狀態歷史記錄」表,其中包含員工的工作狀態列表。我想要做的只是當他們的狀態值是「最新」時,獲取每個員工最新記錄的列表。SQL如果值爲「已選中」,則爲員工選擇最新記錄
到目前爲止,這是查詢我有僞代碼
SELECT *
FROM EMP.EmployeeRecords
WHERE (THE LATEST STATUS RECORD) StatusValue = 'Up To Date'
你的問題形成的很不好。你應該有樣本數據和所需的佈局,以及用你正在使用的數據庫標記問題。
猜測在數據的結構,這裏是一個相關子查詢:
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';
我認爲你正在尋找MAX()函數約翰。看看該定義如下:
https://msdn.microsoft.com/en-us/library/ms187751.aspx
考慮一些假設考慮在內:
比方說,你對EMP.EmployeeRecords
表EmployeeRecordsID
這是一個自動遞增標識列,以及作爲EmployeeName
來區分不同的員工;以獲得最新的記錄,你會做下面的事情
select
LatestID = MAX(EmployeeRecordsID)
, EmployeeName
from EMP.EmployeeRecords
where StatusValue = 'Up To Date'
group by EmployeeName
這不是一個真正的答案。應該是一個評論,而不是。 – jarlh
添加表的定義,一些示例表數據和預期的結果! – jarlh
你應該用你正在使用的數據庫標記你的問題。 –