好的,所以我有一个包含以下信息的表
Company, Employee, Work Date, Job Number
ABC 1234 06/01/15 5555
ABC 1234 06/02/15 5555
ABC 1234 06/03/15 5555
ABC 1234 06/04/15 5555
ABC 1234 06/05/15 5555
ABC 1234 06/06/15 5555
ABC 1234 06/11/15 6666
ABC 1234 06/12/15 6666
ABC 1234 06/13/15 6666
ABC 1234 06/14/15 6666
ABC 1234 06/15/15 6666
ABC 1234 06/16/15 6666
我想要的记录是
ABC 1234 06/11/15 6666
我的第一步是使用此查询获取最近的工作日期
SELECT TCH.Company_Code, TCH.Employee_Code, CAST(TCH.Work_Date AS DATE) AS Work_Date, DENSE_RANK() OVER (PARTITION BY TCH.Employee_Code ORDER BY CAST(TCH.Work_Date AS DATE) DESC) AS DateRank
FROM PR_TIME_CARD_HISTORY_MC TCH WITH (NOLOCK)
WHERE TCH.Company_Code <> 'XYZ'
AND LTRIM(RTRIM(TCH.Employee_Code)) = '22164'
第二步是将其连接回原始表以获取作业,但我似乎无法获取作业的记录集以获取最小日期。
SELECT TCH.Company_Code, TCH.Employee_Code, TCH.Job_Number, CAST(TCH.Work_Date AS DATE) AS Work_Date, DENSE_RANK() OVER (PARTITION BY TCH.Job_Number ORDER BY CAST(TCH.Work_Date AS DATE) ASC) AS JobRank
FROM PR_TIME_CARD_HISTORY_MC TCH WITH (NOLOCK)
WHERE TCH.Company_Code <> 'XYZ'
AND TCH.Pay_Type = 'R'
AND LTRIM(RTRIM(TCH.Employee_Code)) = '22164'
希望这会有所帮助,并且肯定可以使用一些指导。