【发布时间】:2011-05-22 03:00:37
【问题描述】:
SELECT a.coupon_upc,a.coup_desc,a.coup_dep,a.manuf,a.coupon_type,r.hh_red,r.red_qty,
r.red_val,a.coups_mailed,a.households_mailed
FROM
(SELECT coupon_upc,
min(coupon_description) coup_desc,
min(campaign_manufacturer_desc) manuf,
min(coupon_department) coup_dep,
coupon_type,
sum(households_red) hh_red,
sum(coup_qty) red_qty,
sum(redeem_value) red_val
FROM lcm_eval.lcm_compare_redeemed_cell r,
dim_campaign c
WHERE r.campaign_id = c.campaign_id
and c.campaign_code = '&LCMXXXX'
and r.cell_key in (41)
group
by coupon_upc,
coupon_type) r,
(SELECT /*+ use_hash(a b c) */
d.coupon_upc,
d.coup_desc,
d.manuf,d.coup_dep,
d.coupon_type,
sum(a.counts) coups_mailed,
sum(a.households) households_mailed
FROM lcm_eval.lcm_current_coupon_alloc_cell a,
dim_campaign c,
(SELECT distinct
coupon_upc,
min(coupon_description) coup_desc,
min(campaign_manufacturer_desc) manuf,
min(coupon_department) coup_dep,
coupon_type
FROM contact_coupon_details
WHERE schedule_key = '23'
group by coupon_upc,coupon_type) d
WHERE a.campaign_id = c.campaign_id
and c.campaign_code = '&LCMXXXX' code
and a.cell_key in (41)
and a.coupon_upc = d.coupon_upc
group by d.coupon_upc, d.coup_desc, d.manuf, d.coup_dep, d.coupon_type) a
WHERE a.coupon_upc = r.coupon_upc (+)
ORDER by a.coupon_type;
我需要总结的栏目是(r.red_qty/a.households_mailed)。这必须以(cellkey,a.coupon_type)组的形式出现。即对于 (cellkey,a.coupon_type) 的每个组合,(r.red_qty/a.households_mailed) 的值是多少。
有人可以建议一个 SQL 来做同样的事情或匿名块吗?
【问题讨论】:
-
什么版本的Oracle? (我注意到旧式连接,所以想知道这是否有 8i 的附加约束)
-
Oracle 10g。代码有点老了。就是这样。