Tsql 带和的SQL子查询

Tsql 带和的SQL子查询,tsql,sql-server-2008-r2,subquery,Tsql,Sql Server 2008 R2,Subquery,我的会计数据库中的分类账表中有以下查询: select lmatter , ltradat , llcode , lamount , lperiod from ledger where lmatter = '1234-ABCD' and lzero <> 'R' order by lperiod 结果是: 由此,我想知道是否有可能创建以下最终结果: 我得到这些的方法如下: 我们的工作假

我的会计数据库中的分类账表中有以下查询:

select  lmatter
        , ltradat
        , llcode
        , lamount
        , lperiod
from    ledger  
where   lmatter = '1234-ABCD'
        and lzero <> 'R'
order by lperiod 
结果是:

由此,我想知道是否有可能创建以下最终结果:

我得到这些的方法如下:

我们的工作假设今天是2015年12月1日,我们正在为2015年11月的数据计费。这使得我们当前使用的lperiod等于'1115'

物质ID是一种独特的物质 上。Bal是SUMFEES+HCOST-SUMPAY,其中lperiod'1115' 付款为SUMPAY,其中lperiod='1115' 当前费用为SUMFEES+HCOST,其中lperiod='1115' 应付金额为上一余额-付款+当前费用 在使用子查询的一个查询下,或者甚至可能在使用两个临时表的情况下,这可能吗

用例 您可以建立更高级的逻辑 对于到期金额,我将使用嵌套查询

select *, prev - pay + current as 'DUE'
from 
(
select  lmatter
      , sum(case when lperiod <> '1115' and llcode in ('FEES', 'HCOST')  then  lamount  
                 when lperiod <> '1115' and llcode = 'PAY'               then -lamount   
            end) as 'prev'
      , sum(case when lperiod  = '1115' and llcode = 'PAY'                then  lamount  
            end) as 'payment' 
      , sum(case when lperiod  = '1115' and llcode in ('FEES', 'HCOST')  then  lamount     
            end) as 'current'             

from    ledger  
where   lmatter = '1234-ABCD'
and     lzero <> 'R'
group by by lmatter 
) as tt

这正是我所需要的。即使是在多个事项层面上,也不只是说明lmatter='xxxxx'的位置,谢谢!