SQL Server查询子减法

时间:2014-07-01 18:18:58

标签: sql sql-server-2008

我有一张Ledger表见图像

我想写一个查询,它将减去DR-CR数据..并仅重新计算到期金额数据。

它应该省略支付金额5000,因为我们在1-3-2014有2000,在1-4-2014有3000

你能帮忙吗〜我已经在申请时这样做了。但我想在我的SQL查询上执行此操作。   enter image description here

1 个答案:

答案 0 :(得分:0)

SQL Server 2008没有累积总和。所以,你必须使用更复杂的表达式。我们的想法是获取DR的累计金额,然后减去信用额的总和,并选择值为正的行。

select l.*
from (select l.*,
             (select sum(dr)
              from ledger l2
              where l2.id <= l.id
             ) as cumdr,
             sum(cr) over () as sumcr
      from ledger l
     ) l
where cumdr - sumcr > 0;