2016-07-06 76 views
0

我想求和一列的第二個記錄與另一列的第一個記錄,並把結果保存在一個新的列如何將一列的第一條記錄與另一列的第二條記錄相加?

這裏是例如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. 可以看到月份餘下時間的Reserve for Month-2 = Reserve for Month-1 + Opening Balance for Month-2
+0

請用SQL Server版本標記您的問題。 –

+3

[在SQL Server中計算運行總計]的可能重複(http://stackoverflow.com/questions/860966/calculate-a-running-total-in-sql-server) –

回答

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; 
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