У меня есть таблица t, которая выглядит следующим образом
key fill store end_date status
1 123 1 2019-04-30 0
2 1234 1 2019-04-30 0
3 123 1 2019-05-01 0
Теперь мне нужно обновить первую запись и установить status=1
, так как третья запись имеет такое же заполнение, значение хранилища и оно самое последнее.
Вывод:
key fill store end_date status
1 123 1 2019-04-30 1
2 1234 1 2019-04-30 0
3 123 1 2019-05-01 0
Я попытался вычислить row_number
и попытался обновить столбец на его основе, но не смог выяснить, как использовать результат в предложении обновления.
update t set
status = 1
from (
select *
from (
select *
, row_number() over (partition by fill, store order by end_dt desc) as row_num from t
) a
where row_num = 2
) b
Этот запрос обновляет все записи, что должно измениться в моем запросе, чтобы получить ожидаемый результат?