У меня есть процесс, который ежедневно выполняется в потоке данных и обновляет last_update_time (поле datetime) для всех элементов в нашей базе данных инвентаризации, которые присутствуют в потоке данных. Проблема, с которой я сталкиваюсь, заключается в том, что когда элемент удаляется из канала данных, его last_updated_time больше не обновляется в базе данных моим процессом. После удаления элемента из потока данных я все еще хочу, чтобы его last_update_time обновлялся, пока существует элемент, который имеет тот же item_group_id (nvarchar), что и этот элемент.
т.е. если в базе данных существует элемент, last_updated_time которого был обновлен моим процессом, и который разделяет item_group_id с другими элементами, которые больше не существуют в потоке данных, я хочу, чтобы их last_update_time был установлен на максимальное значение недавнее last_update_time любого элемента, который имеет этот item_group_id.
Для целей этого вопроса мы говорим обо всех столбцах в одной таблице (фактический запрос более сложен, но я уменьшил его для ясности).
Итак, для начала это выглядит так:
ItemID GroupID Last_Updated_time
----------------------------------------
1 345 5/26/2020 12:00pm
2 345 4/25/2020 12:00pm
3 234 4/25/2020 12:00pm
После
1 345 5/26/2020 12:00pm
2 345 5/26/2020 12:00pm
3 234 4/25/2020 12:00pm
Я подумал, что, возможно, смогу выполнить встроенный запрос в свой оператор обновления, как показано на один из ответов здесь Как ОБНОВИТЬ 1 строку с несколькими строками? , но я изо всех сил пытаюсь выяснить синтаксис, который гарантирует, что я обновляю только поле last_updated_time элементов с тем же GroupID.
Любая помощь будет принята с благодарностью. Использование SQL Server Express в приложении C#.