【问题标题】:credit debit balance using variable in sql server使用sql server中的变量贷记借方余额
【发布时间】:2017-01-27 03:12:03
【问题描述】:

问候 我是 SQL Server 的新手,我有一个带有借记、贷记和其他列属性的表事务,我想计算余额,但我不能使用 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 中进行操作 提前致谢

【问题讨论】:

  • 没有要包含的 id/sequence/timestamp 列?
  • 在 SQL-SERVER 中,您可以使用 Window-Functions OVER() 这可以帮助您

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


【解决方案1】:

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

也就是说,这就是您将如何同时为不同帐户进行计算的方式。

【讨论】:

  • 谢谢 Gordon Linoff 先生,您节省了我的时间
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
  • 2017-07-29
  • 2020-10-05
相关资源
最近更新 更多