新聞中心
oracle創(chuàng)建視圖的方法相信大家都有一定的了解,下面為您介紹的是同表多次查詢不同時段數(shù)據(jù)的oracle創(chuàng)建視圖方法,希望對您有所啟迪。

創(chuàng)新互聯(lián)主要從事網(wǎng)站設計、成都做網(wǎng)站、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務新巴爾虎右,十年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:13518219792
項目開發(fā)過程中有一個小時流量表,分別記錄每個小時每個通道的流量,簡化字段如下(只保留有效字段):
NAME Null?Type
------------------------------- --------- -----
IDNUMBER(19,0)
REPORT_TIME DATE
SEND_NUM NUMBER(19,0)
SUCCESS_NUM NUMBER(19,0)
現(xiàn)在需要創(chuàng)建一個視圖,字段如下:通道id,上一個小時發(fā)送成功率,上第二個小時發(fā)送成功率,上第三小時發(fā)送成功率,比如:現(xiàn)在是14點,則需要13點,12點,11點這三個時段的分別發(fā)送成功率,如果send_num 為0,或者null,則結(jié)果為null。
oracle創(chuàng)建視圖過程:
1. 時間段的處理:
to_char(sysdate,'hh24')-to_char(report_time,'hh24') 可以獲取小時差,根據(jù)結(jié)果為1,2,3 三種情況分別查詢結(jié)果??梢允褂胏ase ... when... then... end 判斷。這里有一種情況需要注意:后面一天的小時為00 ,前一天的小時為23時,需要特殊處理,否則出現(xiàn)負數(shù),這里使用 +24 轉(zhuǎn)換為正數(shù)。這樣完成小時差的比較。
2. send_num 如果為null或者0時 作為除數(shù)的情況:
可以先處理send_num,如果為null或者0,直接不做計算處理。
3.列出完整的查詢語句:
- select vmhr.v_mo,
- vmhr.org_code,
- case decode(sign(to_char(sysdate,'hh24')-to_char(report_time,'hh24')),-1,to_char (sysdate,'hh24')-to_char(report_time,'hh24')+24,to_char(sysdate,'hh24')-to_char(report_time,'hh24')) when 1 then (select decode(nvl(send_num,0),0,null,nvl(success_num,0)/nvl(send_num,1)) from channel_flux where v_mo=vmhr.v_mo) end last_1_suss_rate,
- case decode(sign(to_char(sysdate,'hh24')-to_char(report_time,'hh24')),-1,to_char(sysdate,'hh24')-to_char(report_time,'hh24')+24,to_char(sysdate,'hh24')-to_char(report_time,'hh24')) when 2 then (select decode(nvl(send_num,0),0,null,nvl(success_num,0)/nvl(send_num,1)) from channel_flux where v_mo=vmhr.v_mo) end last_2_suss_rate,
- case decode(sign(to_char(sysdate,'hh24')-to_char(report_time,'hh24')),-1,to_char(sysdate,'hh24')-to_char(report_time,'hh24')+24,to_char(sysdate,'hh24')-to_char(report_time,'hh24')) when 3 then (select decode(nvl(send_num,0),0,null,nvl(success_num,0)/nvl(send_num,1)) from channel_flux where v_mo=vmhr.v_mo) end last_3_suss_rate
- from channel_flux vmhr
說明:sign(var) 是oracle內(nèi)置函數(shù),得到變量var的正負值,小于0 返回 -1,等于0返回0,大于0返回1. decode是oracle的內(nèi)置函數(shù),可以做簡單的判斷;case...when...then ... end 判斷條件,表示case 變量 when 滿足條件 then 執(zhí)行語句 end 具體的使用可以查詢oracle的幫助文檔。
4.完成查詢后,創(chuàng)建視圖:
create view as .... ,補上上面的查詢語句,完成視圖需求。
【編輯推薦】
Oracle創(chuàng)建表和索引
oracle重建索引的實現(xiàn)
全面解析Oracle文件系統(tǒng)
ORACLE系統(tǒng)表和數(shù)據(jù)字典視圖
深度解析Oracle ERP系統(tǒng)模塊
當前標題:同表多次查詢不同時段數(shù)據(jù)的oracle創(chuàng)建視圖方法
本文URL:http://m.fisionsoft.com.cn/article/coegoec.html


咨詢
建站咨詢
