データを入力した包括的な日付範囲の生成
データベースでは、多くの場合、特定の日付範囲内のデータを取得する必要があります。ただし、特定の日付のデータが欠落している場合は、列を空のままにする代わりにゼロを表示すると便利な場合があります。これにより、日付範囲全体が確実に表現され、データのより包括的なビューが提供されます。
問題:
日付と値のデータを含むテーブルがあり、必要があります。指定した範囲内のすべての日付を取得します。特定の日付の行がない場合は、すべての列にゼロを表示したいとします。
解決策:
これは、次を使用して日付のセットを作成することで実現できます。再帰共通テーブル式 (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 中国語 Web サイトの他の関連記事を参照してください。