首頁 > 資料庫 > mysql教程 > 如何在 SQL 查詢中以零值填入缺少的日期?

如何在 SQL 查詢中以零值填入缺少的日期?

Mary-Kate Olsen
發布: 2024-12-17 11:08:25
原創
415 人瀏覽過

How to Fill Missing Dates with Zero Values in SQL Queries?

檢索日期範圍內具有零值的缺失日期

原始查詢檢索兩個日期之間的數據,但排除了缺失的日期。要包含缺失的日期並為缺失的資料分配零值,我們可以利用一種稱為「日期標記」的技術。

標記缺失日期

遞歸公用表表達式(CTE)可用來產生指定範圍內的一系列日期。 CTE 名為 d,從範圍的第一個日期開始,並遞歸增加一天,直到到達結束日期。

;with d(date) as (
  select cast('10/01/2012' as datetime)
  union all
  select date+1
  from d
  where date < '10/15/2012'
  )
登入後複製

加入現有資料

接下來,我們在CTE d 與原始資料表temp (t) 之間執行左外連接,以擷取每個日期的現有資料。如果 temp 中存在日期,則使用該值;否則,我們會取代零。

select t.ID, d.date CDate, isnull(t.val, 0) val
from d
left join temp t
       on t.CDate = d.date
order by d.date
OPTION (MAXRECURSION 0) -- use this if your dates are >99 days apart
登入後複製

有關 MAXRECURSION 的注意事項

OPTION (MAXRECURSION 0) 子句可防止查詢因日期範圍內的過度遞歸而失敗太大了。您可以調整該值以適合您的特定資料範圍。

透過使用此技術,我們可以檢索兩個日期之間的所有日期,包括缺失的日期,同時確保缺失的值表示為零。

以上是如何在 SQL 查詢中以零值填入缺少的日期?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板