在sql server中使用变量的信用借方余额

时间:2016-09-19 12:18:27

标签: c# sql asp.net sql-server sql-server-2012

问候语 我是新的SQL Server我有一个表的事务与属性Debit,Credit和其他列,我想计算余额,但我不能使用CTE查询 期待结果应该像....

借记 信用 余额
10,000 0 10,000
0 3,0000 7,000
5,000 0 12,000

以前我在mysql中使用如下变量

SELECT  A.Debit,A.Credit, @b := @b + A.Debit - A.Credit AS balance
FROM (SELECT @b := 0.0) AS dummy  
 CROSS JOIN FinTrans A

但我是MSSQL SERVER的新手如何在MSSQLSERVER中执行此操作 在此先感谢

1 个答案:

答案 0 :(得分:2)

在SQL Server 2012中,您将使用ANSI标准累积和函数:

select ft.*,
       sum(debit - credit) over (order by ??) as balance
from FinTrans ft;

SQL表代表无序集。 ??用于指定累积金额排序的列。

事实上,这通常看起来像:

select ft.*,
       sum(debit - credit) over (partition by <account id column>
                                 order by <ordering column
                                ) as balance
from FinTrans ft;

也就是说,这就是你如何同时为不同的账户进行计算。