Given this data
| User_ID | Completion_Date |
|---|---|
| 1 | 2016-07-20 |
| 1 | 2016-07-21 |
| 2 | 2016-07-20 |
| 2 | 2016-07-21 |
| 2 | 2016-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
Using n=1, you'll get the one most recent row per user_id:
| User_ID | Completion_Date | Row_Num |
|---|---|---|
| 1 | 2016-07-21 | 1 |
| 2 | 2016-07-22 | 1 |