Как обновить текущий баланс за один выстрел?

У меня есть временная таблица, давайте назовем это #invoices, определяемый как

create table (id int identity(1, 1), billed money, credited money, balance money)

у меня есть следующие данные в нем

Billed   Credited
140.00   
20.00
          60.00
          20.00
         -20.00

Я хотел бы обновить столбец баланса с текущим балансом. так что столбец Баланс обновляется правильно. Баланс в основном, Счета-фактуры - зачислен, но должен учитывать предыдущий ряд.

Так что в моем примере баланс будет таким:

Billed   Credited  Balance
140.00              140.00
20.00               160.00
          60.00     100.00
          20.00      80.00
         -20.00    -100.00

Есть ли способ сделать это, не просматривая строки и сохраняя текущий баланс? В основном я хочу обновить столбец Баланс на основе набора.

2 ответа

Решение

Существуют основанные на множестве способы вычисления промежуточных итогов в SQL Server, однако в текущих версиях SQL Server решение на основе курсора часто оказывается быстрее.

Адам Мачаник написал отличную статью об этом здесь.

Ответ триггеров. Я использую их, и это прекрасно работает. У меня нет точно ваших настроек (это немного странно, если можно так сказать), но в целом они являются правильным подходом здесь. Вы должны быть внимательны к порядку, но кроме этого, все должно быть в порядке.

Другие вопросы по тегам