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做外联接,从而使源表中缺失的行补上,然后做聚合运算就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值