oracle 数据补齐月份,月份与数据不全,怎么计算并填充缺失数据?

with tmp_invm as

(select 'w01' com,

2012 fiscal_year,

1 fiscal_month,

0 total_amt,

0 trans_amt

from dual

union all

select 'w01' com,

2012 fiscal_year,

2 fiscal_month,

20 total_amt,

20 trans_amt

from dual

union all

select 'w01' com,

2012 fiscal_year,

2 fiscal_month,

0 total_amt,

0 trans_amt

from dual

union all

select 'w01' com,

2012 fiscal_year,

2 fiscal_month,

0 total_amt,

0 trans_amt

from dual

union all

select 'w01' com,

2012 fiscal_year,

4 fiscal_month,

0 total_amt,

10 trans_amt

from dual

union all

select 'w01' com,

2012 fiscal_year,

5 fiscal_month,

0 total_amt,

0 trans_amt

from dual

union all

select 'w01' com,

2012 fiscal_year,

5 fiscal_month,

0 total_amt,

-30 trans_amt

from dual

union all

select 'w01' com,

2012 fiscal_year,

5 fiscal_month,

0 total_amt,

0 trans_amt

from dual

union all

select 'w01' com,

2012 fiscal_year,

5 fiscal_month,

0 total_amt,

0 trans_amt

from dual

union all

select 'w01' com,

2012 fiscal_year,

6 fiscal_month,

50 total_amt,

50 trans_amt

from dual

union all

select 'w01' com,

2012 fiscal_year,

11 fiscal_month,

90 total_amt,

40 trans_amt

from dual

union all

select 'w01' com,

2012 fiscal_year,

12 fiscal_month,

90 total_amt,

0 trans_amt

from dual),

mid_sum as

(select com, fiscal_year, fiscal_month, sum(trans_amt) trans_amt

from tmp_invm

group by com, fiscal_year, fiscal_month),

mid_dense as

(select t.com, t.fiscal_year, a.month, nvl(t.trans_amt, 0) trans_amt

from mid_sum t partition by(t.com, t.fiscal_year)

right join (select level month from dual connect by level < 13) a

on (t.fiscal_month = a.month))

select d.com,

d.fiscal_year,

d.month,

sum(d.trans_amt) over(partition by d.com, d.fiscal_year order by d.month) total_amt,

d.trans_amt

from mid_dense d

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值