ホームページ >データベース >mysql チュートリアル >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 サイトの他の関連記事を参照してください。