在oracle中,select 查詢語句,可以使用with,就是一個子查詢,oracle 會把子查詢的結果放到臨時表中,可以反復使用
例子:注意,這是sql語句,不是pl/sql語句, 可以直接放到jdbc執行的
-------------------------------------------------------------------------------------------------------------------
with
--入庫信息,利用子查詢,將數據預處理一次,這樣數據就很少了, 下面可以很快的反復查rkxx,
rkxx as (select sz,zt,sum(se) se --稅種,狀態,稅額
from zsxx
where rkrq between '2007-02' and '2007-06' --條件,統計日期
group by sz,zt
)
select sk.sz,sk.se,fk.se,znj.se
from (select sz,sum(se) se from rkxx --這里可以直接查詢with子查詢的結果rkxx
where zt='01'
group by sz) sk,--稅款
(select sz,sum(se) se from rkxx
where zt='02'
group by sz) fk,--罰款
(select sz,sum(se) se from rkxx
where zt='03
group by sz) znj --滯納金
where sk.sz=fk.sz
and sk.sz=znj.sz
-----------------------------------------------------------------------------------------------------------------------
這樣,經過with預先處理好數據,然后再在處理好的數據上做查詢分析,不用再訪問原始表, 這樣效率是很高的
注意,預先處理好的數據,一定要少, 可以把條件盡可能的加到with子查詢中,這樣后面的查詢才會更快