Обновление дат в таблице товара - PullRequest
1 голос
/ 18 марта 2020

У меня есть таблица product,

Статья может присутствовать в нескольких списках за один и тот же период (или несколько дней спустя)

Мне нужно правильно обновить дату начала - выявить дубликаты списков и удалить дубликаты

- восстановить самый старый список (в зависимости от даты начала)

- обновить дату начала и дату окончания перекрывающегося списка в

Например:

Listing    article    site    start date  end date 
L1           A1         001     01/01/2020   25/02/2020
L2           A2         001     15/02/2020   31/03/2020

ожидаемый результат

Listing  article    site    start date  end date 
L1         A1         001     01/01/2020   25/02/2020
L2         A2         001     26/02/2020   31/03/2020

Есть идеи, пожалуйста?

1 Ответ

0 голосов
/ 18 марта 2020

Если мы предположим, что дата окончания является точной, вы можете использовать это:

with toupdate as (
      select t.*,
             lag(end_date) over (partition by site order by end_date) as prev_end_date
      from t
     )
update toupdate
    set start_date = dateadd(day, 1, prev_end_date)
    where start_date <> dateadd(day, 1, prev_end_date) and
          prev_end_date is not null;

Могут быть некоторые очень сложные случаи, когда самая ранняя дата окончания не является самой ранней датой начала, но это не чехол для ваших образцов данных.

...