oracle中如何累加,求助:如何实现累加查询?

非10g的使用方法

因为有的数据缺失,所以必须要补上这些数据然后做聚合运算,10g的partition outer join也就是这个用处,论坛上有很多这样的问题,非10g也就是要构造这种未缺失的结果集,然后做聚合运算,如下:

SQL> with tmp as

2  (select dtae,tprod from

3  (select distinct tprod from a) ,(select distinct dtae from a)

4  )

5  select dtae,tprod,quantity,sum(quantity) over(partition by tprod order by dtae)

6  from

7  (select  tmp.dtae dtae,tmp.tprod tprod,nvl(a.quantity,0) quantity

8  from   a, tmp

9   where a.tprod(+)=tmp.tprod and a.dtae(+)=tmp.dtae

10   ) order by dtae,tprod ;

DTAE TPROD   QUANTITY SUM(QUANTITY)OVER(PARTITIONBYT

---------- ---------- ---------- ------------------------------

200801 A                100                            100

200801 B                200                            200

200801 C                  0                              0

200802 A                100                            200

200802 B                  0                            200

200802 C                200                            200

200803 A                  0                            200

200803 B                100                            300

200803 C                200                            400

9 rows selected

tmp这个临时结果集就是采用笛卡尔积构造tprod,dtae的所有完整组合,然后和源表a做外联接,从而使源表中缺失的行补上,然后做聚合运算就可以了

参与评论 您还未登录,请先 登录 后发表或查看评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值