我正在尝试使用另一列的第一条记录来汇总一列的第二条记录,并将结果存储在一个新列中
以下是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
列的规则是
Month-1
,它与Opening Balance
Reserve for Month-2
= Reserve for Month-1
+ Opening Balance for Month-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