У меня есть таблица транзакций MySql «tBilling». Пользователь имеет возможность редактировать или вставлять строку для клиента.
Что мне нужно сделать, так это обновить баланс для этой строки и каждой транзакции с датой больше или равной дате новой / измененной транзакции.
PK Cust TDate Amt Balance
==============================================
'1', '22', '2021-03-27', '400.25', '400.25'
'2', '31', '2021-04-03', '111.00', '111.00'
'3', '31', '2021-04-04', '222.00', '333.00'
'4', '31', '2021-04-05', '112.00', '445.00'
'5', '31', '2021-04-06', '1234.10', '1679.10'
'6', '22', '2021-04-04', '112.23', '200.00'
Я думал, что у меня это было с этим ... но у него нет предыдущего баланса. Например, если я редактирую строку 3, новый баланс будет равен сумме Amt (222,00), а не сумме Amt + предыдущий баланс.
set @csum := 0;
update tBilling
set Balance = (@csum := @csum + Amt)
where Cust = 31 and TDate >= '2021-04-04'
order by TDate;
Я экспериментировал с оконными функциями, но не добился прогресса.
заранее спасибо






Вы принимаете неправильный подход. Не храните изменяющиеся данные в таблицах. Рассчитывайте, когда это необходимо: регулярно настраивайте представление о том, что это необходимо.