У меня есть таблица, которая содержит следующие столбцы: ID, Opening_Balnce и Closing Balance.Это существующая таблица, поддерживаемая нашими клиентами, и OB ссылается на сумму, которую необходимо добавить / вычесть к предыдущей строке cb. Например, если я получу 100 rs от поставщика, тогда мне нужно добавить 100 как ob и 600 как cb.
ID OB CB
===============
1 100 100
2 100 200
3 100 300
4 100 400
5 -100 300
6 100 400
7 100 500
8 -100 400
Если я обновляю / удаляю какую-то строку посередине, итоговый баланс должен получить обновление на основе предыдущих значений строки.
Например, я собираюсь обновить OB = 200 для идентификатора= 4, поэтому вывод должен быть следующим:
ID OB CB
===============
1 100 100
2 100 200
3 100 300
4 200 500
5 -100 400
6 100 500
7 100 600
8 -100 500
Я пробовал следующую попытку sql, которая не работает в один выстрел
UPDATE A
SET OB = 200, CB = OB + PrevCB
FROM A JOIN (SELECT LAG(CB) OVER (ORDER BY ID)PrevCB, ID FROM A) X ON A.ID = X.ID
WHERE A.ID = 4;
UPDATE A
SET CB = OB + PrevCB
FROM A JOIN (SELECT LAG(CB) OVER (ORDER BY ID)PrevCB, ID FROM A) X ON A.ID = X.ID
WHERE A.ID > 4;