通過多個分組獲取 N 個最新行

鑑於此資料

使用者身份 完成日期
1 2016 年 7 月 20 日
1 2016 年 7 月 21 日
2 2016 年 7 月 20 日
2 2016 年 7 月 21 日
2 2016 年 7 月 22 日
;with CTE as
(SELECT *, 
        ROW_NUMBER() OVER (PARTITION BY User_ID 
                           ORDER BY Completion_Date DESC) Row_Num
FROM    Data)
SELECT * FORM CTE WHERE Row_Num <= n

使用 n = 1,你將獲得每個 user_id 最近一行:

使用者身份 完成日期 ROW_NUM
1 2016 年 7 月 21 日 1
2 2016 年 7 月 22 日 1