Ведение самой последней записи с сегодняшней даты в таблице - PullRequest
1 голос
/ 07 марта 2019

Мне нужна помощь с оператором обновления / удаления, который я планирую использовать в службах SSIS. У меня есть следующая таблица рекордов:

Record   DateCreated   TimeCreated
1          3/7/19       11:00AM
2          3/7/19       8:00AM
3          2/5/19       9:00AM
4          2/6/19       10:00AM

Я хочу обновить таблицу, чтобы сохранить самую последнюю запись из сегодняшней даты (3/7/19), но удалить более старую запись из сегодняшней даты.

Таблица должна выглядеть следующим образом после обновления:

Record   DateCreated   TimeCreated
1          3/7/19       11:00AM
3          2/5/19       9:00AM
4          2/6/19       10:00AM

Если на сегодняшнюю дату имеется более 2 записей (например, 3, 4 и т. Д.), Я хочу сохранить только одну самую последнюю.

Кто-нибудь может помочь мне с заявлением об обновлении / удалении, необходимом для этого?

1 Ответ

2 голосов
/ 07 марта 2019

Вы можете использовать обновляемый CTE:

with todelete as (
      select t.*,
             row_number() over (partition by datecreated order by timecreated desc) as seqnum
      from t
     )
delete from todelete
    where seqnum > 1 and
          datecreated = convert(date, getdate());
...