Tsql SQL将DATEDIFF筛选器替换为前5名

Tsql SQL将DATEDIFF筛选器替换为前5名,tsql,Tsql,我有一个报告,它使用以下脚本从SQL Server数据库中提取数据- SELECT c.CaseID, h.[DisplayDate], h.Notes FROM ( SELECT DISTINCT CaseID FROM cr_Credit_Control ) AS c LEFT JOIN ( SELECT CaseID, HistoryDate, CONVERT(VarChar, HistoryDate, 103) AS [DisplayDate], Notes FROM History

我有一个报告,它使用以下脚本从SQL Server数据库中提取数据-

SELECT c.CaseID, h.[DisplayDate], h.Notes
FROM
(
SELECT DISTINCT CaseID 
FROM cr_Credit_Control 
) AS c
LEFT JOIN
(
SELECT CaseID, HistoryDate, CONVERT(VarChar, HistoryDate, 103) AS [DisplayDate], Notes
FROM History
WHERE Category = 'Payment Chased'
AND Active = 'True'
) AS h ON c.CaseID = h.CaseID
WHERE DATEDIFF(Day, h.HistoryDate, GETDATE()) <= 90
这提供了过去90天内每个案例的历史记录项目列表。 然而,我真正想要的是显示每个案例的最后5个历史项目,而不管它们是什么时候出现的。我猜这需要使用TOP,也可能是PARTITION,但我正在努力让它工作,希望能有一些提示

SELECT c.CaseID, h.[DisplayDate], h.Notes
FROM(
    SELECT DISTINCT CaseID 
    FROM cr_Credit_Control 
) AS c
LEFT JOIN (
    SELECT CaseID, HistoryDate, CONVERT(VarChar, HistoryDate, 103) AS [DisplayDate], Notes
        ,Row_Number() OVER (PARTITION BY CaseID ORDER BY HistoryDate DESC) [Row]
    FROM History
    WHERE Category = 'Payment Chased'
    AND Active = 'True'
) AS h ON c.CaseID = h.CaseID
    AND h.[Row]<=5
WHERE DATEDIFF(Day, h.HistoryDate, GETDATE()) <= 90