表sttl_busi有如下字段
cdr_div_type varchar2 固定取值为'MOC_I拔其他国字,MOC_H拔回中国,MOC_L拔本地,MTC被叫,GPRS,SMS
pro_cd 省代码
carrier_cd 运营商
chg_rmb 结算收入(简称收入)
uni_chg_rmb 统一资费(简称资费)
cdr_count 话单数
dur_sec 业务出访量(Min)
data 流量要求出具如下报表:
运营商|业务出访量-拔本地|业务出访量-拔其他国家|业务出访量-拔回中国|业务出访量-MT|GPRS-流量|GPRS-结算收入|GPRS-统一资费|
SMS-话单数|SMS-结算收入|SMS-统一资费以上就是要将sttl_busi这张表以字段cdr_div_type为区分条件当6张表来使用如select
a.carrier_cd,
c.dur_sec
a.dur_sec,
b.dur_sec,
d.dur_sec,
e.data,
e.chg_rmb,
e.uni_chg_rmb,
f.dur_count,
f.chg_rmb,
f.uni_chg_rmbfrom
(select * from sttl_busi where cdr_div_type='MOC_I') a,
(select * from sttl_busi where cdr_div_type='MOC_H') b,
(select * from sttl_busi where cdr_div_type='MOC_L') c,
(select * from sttl_busi where cdr_div_type='MTC') d,
(select * from sttl_busi where cdr_div_type='GPRS') e,
(select * from sttl_busi where cdr_div_type='SMS') f但是怎么写这个连接条件呢?因为如果其中如果有一张表如a表有数据就要当做一条记录,类似左连接,但是因为左连接必须先知道或者先确定以哪个表的数据为准,而这里的要求是没有确定以哪个表的数据为准,只要其中一张表,如a或者c表中有查到数据就必须出具这些记录而不管c或者d表有没有数据。所以这个让我这个SQL菜鸟级人物很头痛,希望各位能帮帮忙。如果表中有数据如下:
cdr_div_type | pro_cd | carrier_cd | chg_rmb | uni_chg_rmb |cdr_count | dur_sec |data
MOC_H 100 AFEEF 12 0 0 256 50
MOC_I 100 AFEEF 100 125 100 254 60
MOC_L 100 AFEEF 200 258 260 152 50
MTC 100 AFEEF 50 69 50 251 14
GPRS 100 AFEEF 10 22 60 369 27
SMS 100 AFEEF 80 36 70 258 69
MOC_H 100 BEFTE 12 0 0 256 50
MOC_I 100 BEFTE 100 125 100 254 60
MOC_L 100 BEFTE 200 258 260 152 50
MTC 100 BEFTE 50 69 50 251 14
GPRS 100 BEFTE 10 22 60 369 27
SMS 100 BEFTE 80 36 70 258 69
MOC_H 200 AFEEF 12 0 0 256 50
MOC_I 200 AFEEF 100 125 100 254 60
MOC_L 200 AFEEF 200 258 260 152 50
MTC 200 AFEEF 50 69 50 251 14
GPRS 200 AFEEF 10 22 60 369 27
SMS 200 AFEEF 80 36 70 258 69报表应出具如下:运营商|Min-拔本地|Min--拔外地|Min--拔回中国|Min--MT|GPRS-流量|GPRS-收入|GPRS-资费|SMS-话单数|SMS-收入|SMS-资费|省
AFEEF 152 254 256 251 27 10 22 70 80 36 100
BFEEF 152 254 256 251 27 10 22 70 80 36 100
AFEEF 152 254 256 251 27 10 22 70 80 36 200
select carrier_cd ,
sum(decode(cdr_div_type,'MOC_I',cdr_count,0) as '业务出访量-拔其他国家',
sum(decode(cdr_div_type,'MOC_H',cdr_count,0) as '业务出访量-拔回中国',
.....
from sttl_busi
group by carrier_cd;大致是这种写法,具体的你写吧。网上这类问题很多的,你不防自已找找