Мы также можем использовать подзапрос с GROUP BY
MAX
для каждого идентификатора, как показано ниже
Примечание: пожалуйста, не используйте ключевые слова в качестве названия столбца
declare @table as table(Id INT, [name] varchar(50), [date] date)
insert into @table values
(1,'a', '2019-01-01'),
(1,'a2', '2019-01-02'),
(2,'b', '2019-01-01'),
(3,'c', '2019-01-02'),
(3,'c2', '2019-01-01'),
(4,'d', '2019-01-01')
SELECT t.*
FROM @table t
INNER JOIN (SELECT id, MAX([date]) AS [date] FROM @table GROUP BY id) t1 ON t1.[date] = t.[date]
AND t1.id = t.id
ORDER BY t.id
ВЫВОД:
Id name date
1 a2 2019-01-02
2 b 2019-01-01
3 c 2019-01-02
4 d 2019-01-01