举例:科目一如果在8月份没有发生额,那么用窗口函数或者不等值关联去求每个月的累计发生额(8月份的累计发生额为1-8月份的发生额总和)时,8月份的累计发生额就求不出来
用如下方法可以避免上述情况
with tmp as(
select 全院,一级部门,二级部门,一级收支项目,二级收支项目,三级收支项目,四级收支项目,五级收支项目,核算账簿,法人,一级科目,二级科目,三级科目,四级科目,年,月,开票金额,金额,'01' as period
from ads.view_cwsrqyfr where 月 <= '01'
union all
select 全院,一级部门,二级部门,一级收支项目,二级收支项目,三级收支项目,四级收支项目,五级收支项目,核算账簿,法人,一级科目,二级科目,三级科目,四级科目,年,月,开票金额,金额,'02' as period
from ads.view_cwsrqyfr where 月 <= '02'
union all
select 全院,一级部门,二级部门,一级收支项目,二级收支项目,三级收支项目,四级收支项目,五级收支项目,核算账簿,法人,一级科目,二级科目,三级科目,四级科目,年,月,开票金额,金额,'03' as period
from ads.view_cwsrqyfr where 月 <= '03'
union all
select 全院,一级部门,二级部门,一级收支项目,二级收支项目,三级收支项目,四级收支项目,五级收支项目,核算账簿,法人,一级科目,二级科目,三级科目,四级科目,年,月,开票金额,金额,'04' as period
from ads.view_cwsrqyfr where 月 <= '04'
union all
select 全院,一级部门,二级部门,一级收支项目,二级收支项目,三级收支项目,四级收支项目,五级收支项目,核算账簿,法人,一级科目,二级科目,三级科目,四级科目,年,月,开票金额,金额,'05' as period
from ads.view_cwsrqyfr where 月 <= '05'
union all
select 全院,一级部门,二级部门,一级收支项目,二级收支项目,三级收支项目,四级收支项目,五级收支项目,核算账簿,法人,一级科目,二级科目,三级科目,四级科目,年,月,开票金额,金额,'06' as period
from ads.view_cwsrqyfr where 月 <= '06'
union all
select 全院,一级部门,二级部门,一级收支项目,二级收支项目,三级收支项目,四级收支项目,五级收支项目,核算账簿,法人,一级科目,二级科目,三级科目,四级科目,年,月,开票金额,金额,'07' as period
from ads.view_cwsrqyfr where 月 <= '07'
union all
select 全院,一级部门,二级部门,一级收支项目,二级收支项目,三级收支项目,四级收支项目,五级收支项目,核算账簿,法人,一级科目,二级科目,三级科目,四级科目,年,月,开票金额,金额,'08' as period
from ads.view_cwsrqyfr where 月 <= '08'
union all
select 全院,一级部门,二级部门,一级收支项目,二级收支项目,三级收支项目,四级收支项目,五级收支项目,核算账簿,法人,一级科目,二级科目,三级科目,四级科目,年,月,开票金额,金额,'09' as period
from ads.view_cwsrqyfr where 月 <= '09'
union all
select 全院,一级部门,二级部门,一级收支项目,二级收支项目,三级收支项目,四级收支项目,五级收支项目,核算账簿,法人,一级科目,二级科目,三级科目,四级科目,年,月,开票金额,金额,'10' as period
from ads.view_cwsrqyfr where 月 <= '10'
union all
select 全院,一级部门,二级部门,一级收支项目,二级收支项目,三级收支项目,四级收支项目,五级收支项目,核算账簿,法人,一级科目,二级科目,三级科目,四级科目,年,月,开票金额,金额,'11' as period
from ads.view_cwsrqyfr where 月 <= '11'
union all
select 全院,一级部门,二级部门,一级收支项目,二级收支项目,三级收支项目,四级收支项目,五级收支项目,核算账簿,法人,一级科目,二级科目,三级科目,四级科目,年,月,开票金额,金额,'12' as period
from ads.view_cwsrqyfr where 月 <= '12'
)
select
全院,一级部门,二级部门,一级收支项目,二级收支项目,三级收支项目,四级收支项目,五级收支项目,核算账簿,法人,一级科目,二级科目,三级科目,四级科目,年,period,
sum(开票金额) 开票金额,
sum(金额) 金额
from tmp a
group by
全院,一级部门,二级部门,一级收支项目,二级收支项目,三级收支项目,四级收支项目,五级收支项目,核算账簿,法人,一级科目,二级科目,三级科目,四级科目,年,period
;