sql运行总帐户余额

时间:2015-05-22 12:05:08

标签: sql sql-server-2008 running-total

我正在尝试在SQL2008中准备一份子分类帐查看报告。 这是临时表

AccountCode |Date       |Fiche Type      |Debit    |Credit  |Balance
100.001.001 |1.1.2015   |Açılış Fişi     |1856,09  |0       |1856,09
100.001.002 |1.1.2015   |Mahsup Fişi     |0        |20      |-20
100.001.001 |1.2.2015   |Tediye Fişi     |0        |950     |906,09
100.001.002 |1.2.2015   |Açılış Fişi     |2931,37  |0       |2911,37
100.001.001 |1.4.2015   |Mahsup Fişi     |0        |6,25    |899,84
100.001.002 |1.6.2015   |Tahsil Fişi     |0        |400     |2511,37
100.002.001 |1.7.2015   |Açılış Fişi     |0        |1969,5  |-1969,5
100.002.001 |1.20.2015  |Mahsup Fişi     |217,6    |0       |-1751,9
100.001.001 |1.21.2015  |Mahsup Fişi     |500      |0       |1399,84
100.002.001 |1.21.2015  |Tediye Fişi     |2000     |0       |248,1
100.001.002 |1.21.2015  |Tahsil Fişi     |543,34   |0       |3054,7

在最后一栏中,我尝试计算第一列中帐户代码的余额。平衡字段的公式简单(借记 - 贷记)。报告应按日期排序。因此,例如在第3行中,由于帐户代码相同,因此余额字段必须采用第一列值并将它们与第3列的值(Row1(借方 - 贷方)+行3(借方 - 贷方))组合。

我尝试了很多东西,但没有运气,因为列表没有按照运行总计所基于的标准排序。

有人能为我提供解决方案吗?

2 个答案:

答案 0 :(得分:2)

t[i].salary = ((float)t[i].hours * 16);

请参阅SQL Fiddle here

HTH

答案 1 :(得分:0)

在SQL Server 2012+中,您可以使用累积总和。在SQL Server 2008中,您可以使用相关子查询,联接或应用。以下是后者:

select l.*, cume.balance
from ledger l cross apply
     (select sum(debit - credit) as balance
      from ledger l2
      where l2.AccountCode = l.AccountCode and
            l2.date <= l.date
     ) cume;