根据下面的记录集,我有三列,需要返回每组 PersonId 的最大 CaseId 值。
ID PersonId CaseId
66 30 410
1681 30 3508
226 31 958
856 31 2213
1023 31 2400
例如,我想返回一个记录集,例如:
ID PersonId CaseId
1681 30 3508
1023 31 2400
如您所见,我始终返回所有 PersonId 集的最大 CaseId。
我尝试了以下方法,但它并不总是返回最大记录:
WITH latestRecord AS
(
SELECT CaseId, PersonId, ID,
ROW_NUMBER() OVER (PARTITION BY PersonId ORDER BY ID ASC) AS RN
FROM Employee
)
SELECT Max(RN),CaseId, PersonId
FROM latestRecord
GROUP BY RN,CaseId, PersonId
--WHERE RN > 1
ORDER BY CaseId
感谢您的帮助!
最佳答案
你几乎是对的:
WITH latestRecord
AS
(
SELECT CaseId,
PersonId,
ID,
RN=ROW_NUMBER() OVER (PARTITION BY PersonId ORDER BY CaseId DESC)
FROM Employee
)
SELECT CaseId,
PersonId,
ID
FROM latestRecord
WHERE RN = 1
ORDER BY CaseId
关于sql - 从具有公共(public)列的记录集中获取最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18282329/