SQL 获取多个分组中的N个最新行

示例

给定此数据

用户身份完成日期
12016-07-20
12016-07-21
22016-07-20
22016-07-21
22016-07-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:

用户身份完成日期行数
12016-07-211
22016-07-221