select NVL(SUM((to_date('2009-03-27', 'yyyy-mm-dd') - T_EDR_BGN_TM + 1) /
(T_INSRNC_END_TM - T_EDR_BGN_TM + 1) * NVL(N_PRM_VAR2, 0)),
0) vegcp
from t_Acceptsech_Pi t
where C_DPT_CDE like '9%'
AND TO_CHAR(T_INSRNC_BGN_TM, 'YYYY-MM-DD') >= '2009-01-01'
AND TO_CHAR(T_INSRNC_BGN_TM, 'YYYY-MM-DD') <= '2009-03-27'
and TO_CHAR(T_INSRNC_END_TM, 'YYYY-MM-DD') > '2009-01-01'
and TO_CHAR(T_EDR_BGN_TM, 'YYYY-MM-DD') < '2009-03-27'
and t.c_eng_no in
(select distinct (c_eng_no)
from t_acceptsech_pi
where C_DPT_CDE like '9%'
AND TO_CHAR(T_INSRNC_BGN_TM, 'YYYY-MM-DD') >= '2008-01-01'
AND TO_CHAR(T_INSRNC_BGN_TM, 'YYYY-MM-DD') <= '2008-03-27'
and c_vhl_frm in
(select c_vhl_frm
from t_acceptsech_pi
where C_DPT_CDE like '9%'
AND TO_CHAR(T_INSRNC_BGN_TM, 'YYYY-MM-DD') >= '2008-01-01'
AND TO_CHAR(T_INSRNC_BGN_TM, 'YYYY-MM-DD') <= '2008-03-27'))
and (C_EDR_TYPE = '1' or C_EDR_TYPE = '3');
直接用PLSQL调试存过就调试不通
但是把存过的SQL抓出来把条件换上就能执行
如果select出的记录数很少,则要考虑网络传输速度了
我的单步到存过里面看的,就是这条一直在run
就算效率高点,也不至于这样吧。估计还是其他什么地方我没考虑到
继续等强人的圆满解决方案
看看有什麼資訊
查看access path..等等