使用填充資料產生綜合日期範圍
在資料庫中,通常需要擷取特定日期範圍內的資料。但是,當某些日期的資料遺失時,顯示零而不是將列留空會很有用。這可確保表示整個日期範圍,從而提供更全面的資料視圖。
問題:
您有一個包含日期和值資料的表,並且需要擷取指定範圍內的所有日期。如果特定日期沒有行,您希望所有列顯示零。
解決方案:
這可以透過使用建立一組日期來實現遞歸公用表表達式 (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中文網其他相關文章!