|
newkid 发表于 2012-1-16 22:41 ![]()
LEFT JOIN 和 (+) 的例子能举一个吗?
select Tpa_rnc_sum.first_result,
Tpa_rnc_sum.ne_id,
Tpa_rnc_sum.ne_type,
soa_get_nename(Tpa_rnc_sum.ne_id, Tpa_rnc_sum.ne_type) ne_name,
round(SFB_DIVFLOAT_1(NVL(Tpa_rnc_sum.RelReqCS_Conv55, 0) +
NVL(Tpa_rnc_sum.NbrRABCSRelIuConn_Conv55, 0),
NVL(tpa_rnc_sum.SuccEstabCSNoQueuing_Conv55, 0) +
NVL(tpa_rnc_sum.SuccEstabCSQueuing_Conv55, 0),
0,
0) * 100,
2) VIRCOLUMN_00,
round(NVL(Tpa_utrancell_sum.CSTraffic_Conv11, 0) +
NVL(Tpa_utrancell_sum.CSTraffic_Conv22, 0),
2) VIRCOLUMN_01,
round(NVL(SFB_DIVFLOAT_1(NVL(tpa_rnc_sum.RelReqPS_Cause, 0) +
NVL(tpa_rnc_sum.NbrRABPSRelIuConn_cause, 0),
NVL(tpa_rnc_sum.SuccEstabPSNoQueuing, 0) +
NVL(tpa_rnc_sum.SuccEstabPSQueuing, 0),
0,
0) * 100,
0),
2) VIRCOLUMN_02,
round(NVL(tpa_utrancell_sum.PSUlOct, 0) +
NVL(tpa_utrancell_sum.PSDlOct, 0),
2) VIRCOLUMN_03,
round(NVL(SFB_DIVFLOAT_1(tpa_utrancell_sum.TSNbrAssnBRUUL,
tpa_utrancell_sum.Bruul * 0.75,
0,
0) * 100,
0),
2) VIRCOLUMN_04,
round(NVL(SFB_DIVFLOAT_1(tpa_utrancell_sum.TSNbrAssnBRUDL,
tpa_utrancell_sum.Brudl * 0.75,
0,
0) * 100,
0),
2) VIRCOLUMN_05,
round(NVL(SFB_DIVFLOAT_1(NVL(tpa_rnc_sum.SuccEstabCSNoQueuing_Conv55,
0) + NVL(tpa_rnc_sum.SuccEstabCSQueuing_Conv55,
0),
tpa_rnc_sum.AttEstabCS_Conv55,
0,
0),
0) *
NVL(SFB_DIVFLOAT_1(NVL(tpa_utrancell_sum.SuccConnEstab_1, 0) +
NVL(tpa_utrancell_sum.SuccConnEstab_6, 0),
NVL(tpa_utrancell_sum.AttConnEstab_1, 0) +
NVL(tpa_utrancell_sum.AttConnEstab_6, 0),
0,
0),
0) * 100,
2) VIRCOLUMN_06,
round(SFB_DIVFLOAT_1(tpa_rnc_sum.SuccEstabCSNoQueuing_Conv11 +
nvl(tpa_rnc_sum.SuccEstabCSQueuing_Conv11, 0) +
tpa_rnc_sum.SuccEstabCSNoQueuing_Conv22 +
nvl(tpa_rnc_sum.SuccEstabCSQueuing_Conv22, 0),
tpa_rnc_sum.AttEstabCS_Conv11 +
tpa_rnc_sum.AttEstabCS_Conv22,
0,
0) * 100,
2) VIRCOLUMN_07,
round(NVL(SFB_DIVFLOAT_1(NVL(Tpa_rnc_sum.RelReqCS_Conv11, 0) +
NVL(Tpa_rnc_sum.RelReqCS_Conv22, 0) +
NVL(Tpa_rnc_sum.NbrRABCSRelIuConn_Conv11, 0) +
NVL(Tpa_rnc_sum.NbrRABCSRelIuConn_Conv22, 0),
NVL(Tpa_rnc_sum.SuccEstabCSNoQueuing_Conv11,
0) +
NVL(Tpa_rnc_sum.SuccEstabCSQueuing_Conv11, 0) +
NVL(Tpa_rnc_sum.SuccEstabCSNoQueuing_Conv22,
0) +
NVL(Tpa_rnc_sum.SuccEstabCSQueuing_Conv22, 0),
0,
0) * 100,
0),
2) VIRCOLUMN_08,
round(NVL(SFB_DIVFLOAT_1(NVL(tpa_rnc_sum.SuccEstabPSNoQueuing, 0) +
NVL(tpa_rnc_sum.SuccEstabPSQueuing, 0),
tpa_rnc_sum.AttEstabPs,
0,
0) *
SFB_DIVFLOAT_1(NVL(tpa_utrancell_sum.SuccConnEstab_2, 0) +
NVL(tpa_utrancell_sum.SuccConnEstab_7, 0) +
NVL(tpa_utrancell_sum.SuccConnEstab_3, 0) +
NVL(tpa_utrancell_sum.SuccConnEstab_8, 0) +
NVL(tpa_utrancell_sum.SuccConnEstab_4, 0) +
NVL(tpa_utrancell_sum.SuccConnEstab_9, 0),
NVL(tpa_utrancell_sum.AttConnEstab_2, 0) +
NVL(tpa_utrancell_sum.SuccConnEstab_7, 0) +
NVL(tpa_utrancell_sum.SuccConnEstab_3, 0) +
NVL(tpa_utrancell_sum.SuccConnEstab_8, 0) +
NVL(tpa_utrancell_sum.SuccConnEstab_4, 0) +
NVL(tpa_utrancell_sum.SuccConnEstab_9, 0),
0,
0) * 100,
0),
2) VIRCOLUMN_09,
round(sfb_divfloat_1(nvl(tpa_utrancell_ho_sum.AttOutCS, 0) -
nvl(tpa_utrancell_ho_sum.FailOutCS, 0),
nvl(tpa_utrancell_ho_sum.AttOutCS, 0),
0,
0) * 100,
2) VIRCOLUMN_10,
round(sfb_divfloat_1(tpa_utrancell_ho_sum.AttOutPsUtran -
tpa_utrancell_ho_sum.FailOutPsUtran,
tpa_utrancell_ho_sum.AttOutPsUtran,
0,
0) * 100,
2) VIRCOLUMN_11
from Tpa_rnc_sum Tpa_rnc_sum
left join tpa_utrancell_sum tpa_utrancell_sum
on Tpa_rnc_sum.first_result = tpa_utrancell_sum.first_result
and Tpa_rnc_sum.ne_id = tpa_utrancell_sum.ne_id
and Tpa_rnc_sum.ne_type = tpa_utrancell_sum.ne_type
and Tpa_rnc_sum.sum_level = tpa_utrancell_sum.sum_level
and Tpa_rnc_sum.sv_cat_id = tpa_utrancell_sum.sv_cat_id
and Tpa_rnc_sum.sv_id = tpa_utrancell_sum.sv_id
and Tpa_rnc_sum.busy_type = tpa_utrancell_sum.busy_type
left join tpa_utrancell_ho_sum tpa_utrancell_ho_sum
on Tpa_rnc_sum.first_result = tpa_utrancell_ho_sum.first_result
and Tpa_rnc_sum.ne_id = tpa_utrancell_ho_sum.ne_id
and Tpa_rnc_sum.ne_type = tpa_utrancell_ho_sum.ne_type
and Tpa_rnc_sum.sum_level = tpa_utrancell_ho_sum.sum_level
and Tpa_rnc_sum.sv_cat_id = tpa_utrancell_ho_sum.sv_cat_id
and Tpa_rnc_sum.sv_id = tpa_utrancell_ho_sum.sv_id
and Tpa_rnc_sum.busy_type = tpa_utrancell_ho_sum.busy_type
where Tpa_rnc_sum.sum_level = 0
and Tpa_rnc_sum.ne_type in (9200)
and Tpa_rnc_sum.sv_cat_id = -1
and Tpa_rnc_sum.sv_id = -1
and Tpa_rnc_sum.busy_type = 0
and Tpa_rnc_sum.first_result =
(select max(trunc(first_result, 'hh')) - 1
from Tpa_rnc_sum
where first_result >= trunc(sysdate, 'hh') - 8
and first_result <= trunc(sysdate, 'hh'))
这个语句对于 and Tpa_rnc_sum.first_result =
(select max(trunc(first_result, 'hh')) - 1
from Tpa_rnc_sum
where first_result >= trunc(sysdate, 'hh') - 8
and first_result <= trunc(sysdate, 'hh'))这个限制条件不会根据Tpa_rnc_sum.first_result = tpa_utrancell_sum.first_result这个条件被转移到 tpa_utrancell_sum 表,从而导致 tpa_utrancell_sum出现全表扫描,而是用Oracle的SQL99语法写成(+)形式则没有全表扫描问题。
|
|