ホームページ >データベース >mysql チュートリアル >SQL を使用して範囲内のすべての日付を表示し、欠損値をゼロで埋める方法

SQL を使用して範囲内のすべての日付を表示し、欠損値をゼロで埋める方法

DDD
DDDオリジナル
2024-12-22 16:47:10601ブラウズ

How to Display All Dates in a Range and Fill Missing Values with Zero Using SQL?

すべての日付を表示し、欠損値をゼロで埋めるクエリの開発

日付範囲を使用する場合、多くの場合、次のことを考慮する必要があります。データポイントが欠落しています。この包括的なガイドでは、指定された 2 つの日付間のすべての日付を表示し、欠落している行にゼロ値を割り当てる問題の解決策を提供します。

この問題に対処するには、「d」という名前の共通テーブル式 (CTE) を利用できます。 。この CTE は、指定された範囲内の一連の日付を生成します。次に、CTE と元の「一時」テーブルの間で左結合を実行して、目的の結果を取得します。

変更されたクエリは次のとおりです。

;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) -- use this if your dates are >99 days apart

この修正されたクエリにより、欠落しているすべてのテーブルが確実に一致します。日付が取得され、対応する「val」列にゼロが入力されます。日付範囲が 99 日を超える状況を処理するために、「OPTION (MAXRECURSION 0)」ステートメントが追加されました。

以上がSQL を使用して範囲内のすべての日付を表示し、欠損値をゼロで埋める方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。