余额计算



>我有一个表格,其中有 5 列

Accno ValueDate withdra diposits 余额支付Altkey 1     2015-01-01  25000    0     25000    0 1     2015-01-02  500      0      25500     1 1     2015-01-03   0      1000    24500   2 1     2015-01-03  2000      0     26500    0 1     2015-01-04   0      1000     25500    2 1     2015-01-05  2000      0     27500    1 1     2015-01-06   4000     0     29500    0 

现在我需要计算新的余额,如果 paymentaltkey = 1,那么我们不会在余额中添加withdra。如果 paymentaltkey = 2,那么我们不减去 deposit

如何像这样创建新的余额输出:

Accno withdra diposits balance payme newbalace1       25000      0      25000    0       250001         500      0      25500    1       250001           0   1000      24500    2       250001        2000      0      26500    0       270001           0   1000      25500    2       270001        2000      0      27500    1       270001        4000      0      29500    0       310001           0   1000      25500    0       30000

首先,你需要有一个描述记录顺序的列,否则你无法真正计算任何东西。然后只需使用 case 语句做一个运行总计,如下所示:

select *,
  sum(case when paymentaltkey = 1 then 0 else [withdra] end 
    - case when paymentaltkey = 2 then 0 else [diposits] end) 
         over (partition by [accno] order by yourorderingcolumn) as [newbalace]
from
  yourtable

这适用于SQL Server 2012+,如果您使用的是旧版本,只需检查如何进行汇总。

最新更新