SQL 带 SUM 的子查询

SQL Subquery with SUMs

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

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

结果是:

据此,我想知道是否可以创建最终结果:

我得到这些#的方式如下:

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

这是否可能在使用子查询的一个查询下,或者甚至可能使用一对临时 tables?

用例
你可以建立更高级的逻辑
对于应付金额,我会嵌套查询

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