Как получить из таблицы необходимый результат одним запросом?
Не могу запросом получить из первой таблицы результат отображенный в 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