如何将一列的第一条记录与另一列的第二条记录相加?

时间:2016-07-06 14:21:27

标签: sql sql-server

我正在尝试使用另一列的第一条记录来汇总一列的第二条记录,并将结果存储在一个新列中

以下是SQL Server表的示例

Emp_Code   Emp_Name    Month          Opening_Balance   
 G101      Sam          1              1000              
 G102      James        2              -2500             
 G103      David        3              3000     
 G104      Paul         4              1800     
 G105      Tom          5              -1500      

我正在尝试在新的Reserve

上获得如下输出
Emp_Code   Emp_Name    Month          Opening_Balance    Reserve
 G101      Sam          1              1000              1000       
 G102      James        2              -2500             -1500         
 G103      David        3              3000               1500
 G104      Paul         4              1800               3300
 G105      Tom          5              -1500              1800

实际上,计算Reserve列的规则是

  1. 对于Month-1,它与Opening Balance
  2. 相同
  3. 其余月份Reserve for Month-2 = Reserve for Month-1 + Opening Balance for Month-2

2 个答案:

答案 0 :(得分:3)

您似乎想要累积总和。在SQL Server 2012+中,您可以这样做:

select t.*,
       sum(opening_balance) over (order by [Month]) as Reserve
from t;

在早期版本中,您可以使用相关子查询或apply

执行此操作
select t.*,
       (select sum(t2.opening_balance) from t t2 where t2.[Month] <= t.[Month]) as reserve
from t;

答案 1 :(得分:0)

你可以自我加入。

SELECT t.Emp_Code, t.Emp_Name, t.Month, t.Opening_Balance, t.Opening_Balance + n.Reserve
FROM Table1 t
JOIN Table2 n
ON t.Month = n.Month - 1