如何解决 MySQL 5.7 上 MySQL8 的问题 运行 代码?

how to solve problem running code for MySQL8 on MySQL 5.7?

我有以下数据:

+---------+--------+----------+------+-------+--------+-----------+
| xType   | xAccID | xAccName | xCat | xYear | xMonth | xRaseed   |
+---------+--------+----------+------+-------+--------+-----------+
| Amounts | 52     | Acc1     | Rs   | 2020  | 11     | 3144.83   |
| Amounts | 52     | Acc1     | Rs   | 2020  | 12     | -15199.64 |
| Amounts | 53     | Acc2     | Cus  | 2020  | 12     | 5306.04   |
| Amounts | 53     | Acc2     | Cus  | 2020  | 11     | 1090.64   |
+---------+--------+----------+------+-------+--------+-----------+

实际上,我想将当前行中的 (xRaseed) 与上一行中的 (xRaseed) 相加 对于每个 (xAccID) 分别

我想要的结果:

+---------+--------+----------+------+-------+--------+--------------------------------+
| xType   | xAccID | xAccName | xCat | xYear | xMonth | xRaseed                        |
+---------+--------+----------+------+-------+--------+--------------------------------+
| Amounts | 52     | Acc1     | Rs   | 2020  | 11     | 3144.83                        | 
| Amounts | 52     | Acc1     | Rs   | 2020  | 12     | Not -15199.64 But (-12,054.81) |
| Amounts | 53     | Acc2     | Cus  | 2020  | 12     | 5306.04                        |
| Amounts | 53     | Acc2     | Cus  | 2020  | 11     | Not 1090.64 But (6,396.68)     |
+---------+--------+----------+------+-------+--------+--------------------------------+

我应用了从这里的某人那里得到的以下解决方案:

select t.*,
       sum(xRaseed) over (partition by xAccID order by xYear, xMonth) as running_xRaseed
from t;

但是在本地服务器上一切正常,但是当我在我的主机上应用该解决方案时,却不起作用??在本地我使用 (xampp - 10.4.17-MariaDB),在我的主机中,我使用 (MySQL 5.7.23-23),请问有什么问题?

Here 是一个 db<>fiddle

在早于 8+ 的 MySQL 版本中,我们可以使用相关子查询来查找滚动总和:

SELECT xType, xAccID, xAccName, xCat, xYear, xMonth,
    (SELECT SUM(t2.xRaseed) FROM yourTable t2
     WHERE t2.xAccID = t1.xAccID AND
           (t2.xYear < t1.xYear OR
            t2.xYear = t1.xYear AND t2.xMonth <= t1.xMonth)) AS xRaseed
FROM yourTable t1
ORDER BY
    xAccId,
    xYear,
    xMonth;