Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Update всех строк, которые суммировал  [new]
Pandasama
Member

Откуда:
Сообщений: 1
Стоит задача:
в таблице просуммировать кучу строк (отобрав по разным признакам) и те, что просуммировал пометить как "обработанные" изменив флажок в определенном поле

вариант "в лоб":
суммируем по признакам
затем по тем же признакам вешаем флажок
может привести к ситуации с "фантомами" - если после суммирования появятся новые записи, подходящие под условия набора, то они будут помечены как обработанные, хотя в сумме не участвовали

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

вижу единственный вариант:
отобрать по заданным параметрам записи во временную таблицу, затем там их просуммировать и по этому же списку из временной таблицы вешать признак "обработки" в постоянной таблице
смущает то, что количество суммируемых записей может быть достаточно большим, соответственно все это не очень хорошо должно отразиться на скорости работы

может быть есть какой-то более простой вариант для этой "похожей на стандартную" задачу, которого я в силу слабости своих знаний SQL, просто не вижу? какой-нибудь хитрый вариант транзакции с блокировкой и т.д.
17 июл 14, 11:52    [16317438]     Ответить | Цитировать Сообщить модератору
 Re: Update всех строк, которые суммировал  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
Pandasama
вижу единственный вариант:
отобрать по заданным параметрам записи во временную таблицу, затем там их просуммировать и по этому же списку из временной таблицы вешать признак "обработки" в постоянной таблице
смущает то, что количество суммируемых записей может быть достаточно большим, соответственно все это не очень хорошо должно отразиться на скорости работы
Да, можно так, или, если версия позволяет, использовать OUTPUT
17 июл 14, 11:54    [16317458]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить