我想做一些数学运算,但是对于当时的每一行。
例如:
A B C D
-------------------------------
100 -50 =50 20160101
100 0 =150 20160102
100 -50 =100 20160103
所以基本上C列总是所有过去A +(B)列的总和,但不是未来的列。有没有人知道如何在SQL中实现这一点?
我可以在代码中执行此操作,但我想在SQL中执行此操作,只在表中显示结果。
P.S。我的英语不是最好的,所以请随意问我是否不够清楚。
答案 0 :(得分:4)
这称为累积或运行总和。常规方法使用ANSI标准窗口函数:
select a, b,
sum(a + b) over (order by d) as c,
d
from t;
如果您的SQL版本不支持窗口函数,那么您可以使用相关子查询(性能通常会更差):
select a, b,
(select sum(a + b) from t t2 where t2.d <= t.d) as c,
d
from t;