Как получить из таблицы необходимый результат одним запросом?

Не могу запросом получить из первой таблицы результат отображенный в 2 таблице. [посмотреть таблицы][1]

Нужно выбрать первую дату в последней смене города для каждого кода. Я пробовал сделать на основе группировки и сортировки, но ничего рабочего в голову не пришло.

insert into table_a values (1,'2020-01-01','Moscow'),(2,'2020-02-17','Moscow'),(3,'2020-01-13','Moscow'),(1,'2020-01-17','Voronej'),(1,'2020-03-27','Voronej'),(2,'2020-04-02','Ekb'),(2,'2020-05-04','Novosib');
select * from table_a order by code asc, date_begin desc;

create table result (code int, date_begin date,pwz nvarchar(50));
insert into result values (1,'2020-01-17','Voronej'),(2,'2020-05-04','Novosib'),(3,'2020-01-13','Moscow');
select * from result order by code asc, date_begin desc;


  [1]: https://dbfiddle.uk/?rdbms=sqlserver_2014&fiddle=25605ebe3ceb2a5d13004bc2d5e7373a

Ответы (1 шт):

Автор решения: Scrappy Coco

Если все еще актуально:

select code, date_begin, city
from (
         select code,
                city,
                date_begin = FIRST_VALUE(date_begin) over (partition by code, city order by date_begin),
                rn         = ROW_NUMBER() over (partition by code order by date_begin desc)
         from table_a
     ) as g
where g.rn = 1
→ Ссылка