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

2021-08-19 06:44:44 字數 2418 閱讀 4542

具體的請參考:

測試表test:

在下面查詢中的資料時候,會發現日期並不完整,希望日期可以自動補全,並且沒有資料的字段自動以上一行的資料補全。

sql> select * from test;

event_date build_name

---------- ---------------------------

2016-06-25 b1

2016-10-20 b1

2016-11-27 b1

2017-01-15 b1

2017-02-03 b1

2017-02-07 b1

2017-02-09 b1

2016-07-05 b5

2016-07-17 b5

2016-07-20 b5

2016-08-22 b5

event_date build_name

---------- -------------------------

2016-10-11 b5

2016-11-03 b5

2016-12-19 b5

2017-03-08 b5

15 rows selected.

在上面查詢中的資料時候,會發現日期並不完整,希望日期可以自動補全,並且沒有資料的字段自動以上一行的資料補全,也就是想實現如下的效果

dates       build_name_new

---------- ----------------------

2016-06-25 b1

2016-06-26 b1

2016-06-27 b1

2016-06-28 b1

2016-06-29 b1

2016-06-30 b1

2016-07-01 b1

2016-07-02 b1

2016-07-03 b1

2016-07-04 b1

2016-07-05 b5

dates       build_name_new

---------- ------------------------

2016-07-06 b5

2016-07-07 b5

2016-07-08 b5

2016-07-09 b5

2016-07-10 b5

2016-07-11 b5

2016-07-12 b5

2016-07-13 b5

2016-07-14 b5

2016-07-15 b5

2016-07-16 b5

......

2017-02-22 b1

2017-02-23 b1

2017-02-24 b1

2017-02-25 b1

2017-02-26 b1

2017-02-27 b1

2017-02-28 b1

2017-03-01 b1

2017-03-02 b1

2017-03-03 b1

2017-03-04 b1

dates       build_name_new

---------- -------------------------

2017-03-05 b1

2017-03-06 b1

2017-03-07 b1

2017-03-08 b5

257 rows selected.

下面給出最終的實現語句:

/* formatted on 2018/4/24 星期二 上午 11:30:07 (qp5 v5.313) */

with

aaas

(    select bb.startdate + level - 1 dates

from (select max (event_date) enddate, min (event_date) startdate

from test) bb

connect by level <= floor (bb.enddate - bb.startdate) + 1),

bbas

(  select distinct a.dates, t.build_name, t.event_date

from aa a left join test t on t.event_date = a.dates

order by a.dates)

select dates,

build_name,

event_date,

nvl (build_name, lag (build_name ignore nulls) over (order by dates))

build_name_new

from bb;

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

1.問題描述 在資料庫查詢中計算年月週日的資料時候,會發現日期並不完整,希望日期可以自動補全,並且沒有資料的字段補0 最開始的資料展現為如下圖 select nvl sum synnum 0 value to char syntime,yyyy mm dd lable from synlog whe...

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...

mysql查詢日期補全(連續)方法

select od.date,od.ordercount from select date format order time,y m d date,count ordercount from order where order time 開始時間 and order time 結束時間 group...