Обновление MySql с промежуточными итогами

У меня есть таблица транзакций 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;

Я экспериментировал с оконными функциями, но не добился прогресса.

заранее спасибо

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

Tangentially Perpendicular 10.04.2021 04:02
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
1
20
0

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