我想在我的桌子上的一个字段中滚动总数。例如:
ID - Name - Total - RollingTotal
1 - James - 10 - 10
2 - John - 20 - 30
3 - Matthew - 10 - 40
有人可以解释如何在SQL中执行此操作吗?我真的不知道如何解决这个问题,这让我感到困惑!
我问过错误的问题。我的桌子看起来更像是这个
ID - Group - Name - Total - Rolling Total
1 - 1 - James - 10 - 10
2 - 1 - John- 10 - 20
3 - 2 - Matthew - 20 - 20
4 - 2 - Stephanie - 30 - 50
这里的stackOverflow礼仪是什么?原始问题已得到解答,但我并没有很好地解释自己。对不起。
答案 0 :(得分:3)
你可以尝试:
SELECT t1.ID, t1.Name, t1.Total,
(SELECT SUM(Total) FROM your_table t2
WHERE t2.ID <= t1.ID) AS RollingTotal
FROM your_table t1
ORDER BY ID
在用户新要求后编辑:
SELECT t1.ID, t1.`group`, t1.Name, t1.Total,
(SELECT SUM(Total) FROM your_table t2
WHERE t2.ID <= t1.ID
AND t2.`group` = t1.`group`) AS RollingTotal
FROM your_table t1
ORDER BY ID
答案 1 :(得分:0)
我认为你最好的选择是在视图中动态计算滚动总数,正如@Marco建议的那样。
在大多数情况下,将这样的字段直接放在表中是没有意义的,因为与每行关联的滚动总数将取决于行的插入顺序以及没有行的事实然后更新或删除(这显然会影响跟随它们的行的滚动总数)。
如果这是您真正需要的(即表中的行具有“自然”顺序并且在第一次插入后没有更新/删除),您可以使用触发器计算插入时的滚动总计。语法取决于您正在使用的RDBMS。