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'的位置,谢谢!