Если у меня есть:
1, 'a'
2, 'a'
3, 'b'
4, 'b'
И я хочу выбрать строки каждой «буквы», которые будет генерировать самый высокий «id»:
2, 'a'
4, 'b'
Я могу сделать это, как показано ниже.
Но возможно ли это сделать без необходимости оборачивать дополнительный SELECT вокруг всего этого?
declare @t table (id int, txt varchar)
insert into @t (id, txt)
select 1, 'a' union
select 2, 'a' union
select 3, 'b' union
select 4, 'b'
select * from (
select *, row_number() over (partition by txt order by id desc) as row_num
from @t
) z
where row_num = 1