[英]Result of a column based on the max date of another column
我正在清理一些數據。 在員工表中,有狀態為“活動”的 ID,需要根據另一個表的狀態 (text_1) 進行更改。 這是
SELECT e.BW_ID, max(oe.TEXT_1) as 'Employee Status', max(oe.text_1_eff_date) 'Effective Date'
FROM EMPLOYEE e
INNER JOIN ORG_EMPLOYMENT oe on e.BW_ID = oe.BW_ID
WHERE e.CONTROLLED_GROUP_STATUS = 'active'
GROUP BY e.BW_ID
看起來像這樣(示例數據):
但問題是這些員工中的一些在 OE 表上有多個狀態,所以max(oe.text_1)
最終只返回最大值 (R>T),而它應該是 T,因為它有max(text_1_eff_date)
我應該如何編寫查詢以返回每個員工的最新oe.text_1
狀態? 我正在使用 SQL Server 2012
您可以使用row_number()
:
SELECT t.*
FROM (SELECT e.BW_ID, oe.TEXT_1 AS Employee_Status, oe.text_1_eff_date AS Effective_Date,
ROW_NUMBER() OVER (PARTITION BY e.BW_ID ORDER BY oe.text_1_eff_date) AS SEQ
FROM EMPLOYEE e INNER JOIN
ORG_EMPLOYMENT oe
ON e.BW_ID = oe.BW_ID
WHERE e.CONTROLLED_GROUP_STATUS = 'active'
) t
WHERE SEQ = 1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.