Если вам нужна последняя строка для каждого имени, независимо от того, какой месяц был их в прошлом месяце:
;WITH x AS
(
SELECT Name, Number, [Month], [Year], [Fee_Paid],
rn = ROW_NUMBER() OVER
(PARTITION BY Name ORDER BY [Year] DESC, [Month] DESC)
FROM dbo.Table1
)
SELECT Name, Number, [Month], [Year], [Fee_Paid]
FROM x
WHERE rn = 1
ORDER BY Number;
Если вы хотите, чтобы все строки из последнего комбинированного набора год / месяц были найдены независимо от имени, запрос будет немного отличаться:
;WITH x AS
(
SELECT Name, Number, [Month], [Year], [Fee_Paid],
rn = DENSE_RANK() OVER (ORDER BY [Year] DESC, [Month] DESC)
FROM #x
)
SELECT Name, Number, [Month], [Year], [Fee_Paid]
FROM x
WHERE rn = 1
ORDER BY Number;
Оба эти запроса дают результат, который вам нужен, но один из них, вероятно, является правильным только по совпадению.