oraclewith嵌套with_Oracle中with的用法

Oracle中有个with字句,用于构建复杂的查询语句。

语句结构:

with subquery_name1 as (subquery_body1),

subquery_name2 as (subquery_body2)

...

select * from subquery_name1 a, subquery_name2 b

where a.col = b.col

....

以下是实例:

with

subinfo as (select  /*+materialize */ssp.subscriber_id, ssp.subscriber_date

from ow_subscription ssp

where ssp.inactive_date > ssp.active_date

and ssp.active_date < date '2008-12-01'

and ssp.active_date >= date '2008-11-01'

and ssp.product_id = 494092609),

iptvcnt as (select /*+materialize */s.subscriber_id, count(*)  cnt

from ow_iptv_bill ib, subinfo s

where ib.starttime >= date '2008-11-01'

and ib.starttime < date '2008-12-01'

and ib.subscriberid = s.subscriber_id

group by s.subscriber_id),

iptvtime as (select /*+materialize */s.subscriber_id, sum(de.totaltime) totaltime

from ow_iptvbill_detail de, ow_iptv_bill ib, subinfo s

where to_char(ib.id) = de.transactionkey

and de.startdate < date '2008-12-01'

and de.startdate >= date '2008-11-01'

and ib.starttime >= date '2008-11-01'

and ib.starttime < date '2008-12-01'

and ib.subscriberid = s.subscriber_id

group by s.subscriber_id)

select sub.subscriber_id, sub.name, s.subscriber_date, a.cnt, b.totaltime

from ow_subscriber sub,  subinfo s, iptvcnt a, iptvtime b

where b.subscriber_id = s.subscriber_id

and a.subscriber_id = s.subscriber_id

and sub.subscriber_id = s.subscriber_id

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值