首頁 >資料庫 >mysql教程 >如何產生缺失資料的填充零值的綜合日期範圍?

如何產生缺失資料的填充零值的綜合日期範圍?

Barbara Streisand
Barbara Streisand原創
2024-12-19 03:24:08447瀏覽

How to Generate a Comprehensive Date Range with Populated Zero Values for Missing Data?

使用填充資料產生綜合日期範圍

在資料庫中,通常需要擷取特定日期範圍內的資料。但是,當某些日期的資料遺失時,顯示零而不是將列留空會很有用。這可確保表示整個日期範圍,從而提供更全面的資料視圖。

問題:

您有一個包含日期和值資料的表,並且需要擷取指定範圍內的所有日期。如果特定日期沒有行,您希望所有列顯示零。

解決方案:

這可以透過使用建立一組日期來實現遞歸公用表表達式 (CTE),然後與現有資料表執行左連接。 CTE 產生指定範圍內的一系列日期。左連接將產生的日期與現有行進行匹配,使用 ISNULL() 函數以零填充任何缺失值。

;with d(date) as (
  select cast('10/01/2012' as datetime)
  union all
  select date+1
  from d
  where date < '10/15/2012'
  )
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)

MAXRECURSION 選項指定允許的最大遞歸迭代次數。在這種情況下,由於日期範圍較小(15天),我們可以將其設為0以允許無限迭代。

執行此查詢,您將獲得包含指定範圍內的所有日期的完整資料集範圍。任何缺失的日期都將以零填充,提供資料的全面表示。

以上是如何產生缺失資料的填充零值的綜合日期範圍?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn