Oracle自動補全日期,空資料為0

2021-08-13 22:04:06 字數 1443 閱讀 4240

1.問題描述

在資料庫查詢中計算年月週日的資料時候,會發現日期並不完整,希望日期可以自動補全,並且沒有資料的字段補0

最開始的資料展現為如下圖

select nvl(sum(synnum),0)  value ,to_char(syntime, 'yyyy-mm-dd') lable from synlog where syntype in (4, 5,6) and trunc(syntime) > trunc(sysdate) -  30 group by  to_char(syntime, 'yyyy-mm-dd') order by 2;
最近30天資料查詢出來只有2條資料,這並不是我想要得到的

2.具體實現  

思路為:需要有乙個最近30天的日期表,然後進行乙個左關聯,值為空即補0

最近一月日期表

select calendar_day

from (select to_date((select to_char(sysdate , 'yyyy') from dual) || '0101', 'yyyymmdd') + level-1 as calendar_day from dual

connect by level = trunc(sysdate) - 29 and calendar_day

3.最終實現

select a.calendar_day,

nvl(b.value,0) as value from

(select calendar_day

from (select to_date((select to_char(sysdate+1 , 'yyyy') from dual) || '0101', 'yyyymmdd') + level - 2 as calendar_day from dual

connect by level <=to_char(to_date((select to_char(sysdate+1, 'yyyy') from dual) || '1231', 'yyyymmdd'), 'ddd'))

where calendar_day>= trunc(sysdate) - 29 and calendar_daytrunc(sysdate) - 29 group by to_date( to_char(syntime, 'yyyymmdd'), 'yyyymmdd') )b

on a.calendar_day = b.lable order by a.calendar_day

效果圖:

oracle 查詢自動補全日期以及相應的資料

具體的請參考 測試表test 在下面查詢中的資料時候,會發現日期並不完整,希望日期可以自動補全,並且沒有資料的字段自動以上一行的資料補全。sql select from test event date build name 2016 06 25 b1 2016 10 20 b1 2016 11 27...

Excel補全日期(日期按順序補全)

1 給出的資料 2 想補全缺失的日期,比如2015 3 1,2015 3 2,1 在d列輸入完整的日期,如下圖所示 2 在e2處寫函式 if iserr vlookup d2,b c,2,0 vlookup d2,b c,2,回車,得到結果 然後下拉列表,得到全部完整日期。如圖所示 解釋 if is...

Oracle中日期和空值操作

日期函式 日期得計算 日期rr注意點 空值null 這一篇是最後的乙個過度篇幅,主要涉及日期和空值操作。返回當前系統時間date型別的值,精確到秒,其本質是乙個oracle的內部函式 預設格式為 dd mon rr 返回當前系統時間的時間戳型別的值,精確到毫秒,本質也是內部函式 to date 20...