Хранимая процедура не нужна. Важнейшей частью является внутреннее соединение, которое приводит к желаемому результату.
Вы можете понять, что, «запомнив» последний идентификатор и оплату выполнено
В именах столбцов не должно быть пробелов, иначе вы всегда нужно помнить, что они всегда заключают в капсулу
UPDATE Paymnettable pt
INNER JOIN
(SELECT
`Date`,
IF(@id = ID, IF(`Payment Done` = 1, 0, IF(@Payment_Done = 0, - 1, 0)), 0) `The Problem Field`,
@id:=ID ID,
@Payment_Done:=`Payment Done` 'Payment Done'
FROM
(SELECT
*
FROM
Paymnettable
ORDER BY `ID` , `Date`) t1
, (SELECT @Payment_Done:=0) t2
, (SELECT @ID:=0) t3) pt1
ON pt.`Date` = pt1.`Date`
AND pt.ID = pt1.ID
SET
pt.`The Problem Field` = pt1.`The Problem Field`
Схема (MySQL v5.6)
CREATE TABLE Paymnettable (
`Date` DATE,
`ID` INTEGER,
`Payment Done` INTEGER,
`The Problem Field` INTEGER
);
INSERT INTO Paymnettable
(`Date`, `ID`, `Payment Done`, `The Problem Field`)
VALUES
('2020-02-15', '111', '1', '0'),
('2020-03-15', '111', '0', '0'),
('2020-04-15', '111', '0', '0'),
('2020-03-15', '222', '0', '0'),
('2020-03-31', '222', '0', '0'),
('2020-04-14', '222', '1', '0'),
('2020-02-29', '333', '0', '0'),
('2020-03-15', '333', '0', '0'),
('2020-03-31', '333', '1', '0'),
('2020-04-14', '333', '0', '0');
UPDATE Paymnettable pt
INNER JOIN
(SELECT
`Date`,
IF(@id = ID, IF(`Payment Done` = 1, 0, IF(@Payment_Done = 0, - 1, 0)), 0) `The Problem Field`,
@id:=ID ID,
@Payment_Done:=`Payment Done` 'Payment Done'
FROM
(SELECT
*
FROM
Paymnettable
ORDER BY `ID` , `Date`) t1, (SELECT @Payment_Done:=0) t2, (SELECT @ID:=0) t3) pt1 ON pt.`Date` = pt1.`Date`
AND pt.ID = pt1.ID
SET
pt.`The Problem Field` = pt1.`The Problem Field`
Запрос № 1
SELECT
*
FROM
Paymnettable;
| Date | ID | Payment Done | The Problem Field |
| ---------- | --- | ------------ | ----------------- |
| 2020-02-15 | 111 | 1 | 0 |
| 2020-03-15 | 111 | 0 | 0 |
| 2020-04-15 | 111 | 0 | -1 |
| 2020-03-15 | 222 | 0 | 0 |
| 2020-03-31 | 222 | 0 | -1 |
| 2020-04-14 | 222 | 1 | 0 |
| 2020-02-29 | 333 | 0 | 0 |
| 2020-03-15 | 333 | 0 | -1 |
| 2020-03-31 | 333 | 1 | 0 |
| 2020-04-14 | 333 | 0 | 0 |
Показать на БД Fiddle