Мне кажется, что вы хотите, чтобы итоговая сумма составляла A+credit-debit
, но переключайте их при необходимости.
SET @balance := 0;
SET @high := 0;
SELECT @high := GREATEST(@balance := @balance+credit-debit, @high) FROM mytable;
SELECT @high;
edit: В ответ на ваш комментарий о формировании хранимой функции из этого ... в отличие от хранимых процедур, хранимые функции должны возвращать одно значение, поэтому они не могут содержать запрос SELECT
, если только запрос сохраняет свой результат в переменной. Это означает, что запрос должен иметь гарантированный результат с одним значением. Ниже приведена функция, которую я получил для работы, потому что в этом случае вам нужно только значение MAX @high
:
CREATE FUNCTION high_bal() RETURNS DECIMAL
BEGIN
SET @balance := 0;
SET @high := 0;
SELECT MAX(@high := GREATEST(@balance := @balance+debit_acc-credit_acc, @high))
INTO @high
FROM credit_acc where credit_used_acc=63395;
RETURN @high;
END$$