如何在SQL中的两行和同一列之间进行减法?

时间:2018-06-14 19:54:03

标签: sql

所以,假设我有以下数据

Date A B
1/1  3 6
1/2  4 5
1/3  2 7

我想编写一个创建列C的查询,其中C由A [i] - A [i - 1] + B计算。例如,对于1/2,列C将等于4 - 3 + 5 = 6.对于1/3,C列将等于2 - 4 + 7 = 5.任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

您可以使用LAG

SELECT *, 
   A + B - COALESCE(LAG(A) OVER(ORDER BY Date),0) AS c
FROM tab

答案 1 :(得分:0)

您可以使用lag()

select date, a, b,
       (a + b - lag(a) over (order by date)) as c
from t;

这会在第一行产生null。如果您希望将“上一行”视为0而不是null,请使用lag()的3参数形式:

select date, a, b,
       (a + b - lag(a, 1, 0) over (order by date)) as c
from t;