ホームページ > データベース > mysql チュートリアル > 欠損データにゼロ値を入力して包括的な日付範囲を生成するにはどうすればよいですか?

欠損データにゼロ値を入力して包括的な日付範囲を生成するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-19 03:24:08
オリジナル
411 人が閲覧しました

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート