ホームページ > データベース > mysql チュートリアル > ソース データにギャップがあるにもかかわらず、SQL Server 2000 で完全な日付範囲テーブルを生成するにはどうすればよいですか?

ソース データにギャップがあるにもかかわらず、SQL Server 2000 で完全な日付範囲テーブルを生成するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-21 07:13:09
オリジナル
507 人が閲覧しました

How to Generate a Complete Date Range Table in SQL Server 2000 Despite Gaps in Source Data?

SQL Server 2000 での一時的な日付範囲テーブルの生成

$startDate から $endDate までの範囲の日付と追加のゼロ値のプレースホルダーを含む一時テーブルを作成するという要件列では、顧客テーブルの挿入日付に潜在的なギャップがあるため、問題が発生します。

これを克服するには、次のことを検討してください。次のアプローチ:

  1. 範囲変数の宣言: すでに行ったように、次の宣言を使用して最小挿入日と最大挿入日を取得します:

    declare $startDate set $startDate = select min(InsertDate) from customer
    declare $endDate set $endDate = select max(InsertDate) from customer
    ログイン後にコピー
  2. ダミーの日付を作成するテーブル: 一時テーブルのスキーマを使用し、ループを使用して $startDate から $endDate までの日付を持つダミー テーブルを作成します:

    CREATE TABLE #dates (
     Month DATE,
     Trials INT DEFAULT 0,
     Sales INT DEFAULT 0
    );
    ログイン後にコピー
  3. Populate Dummy Date表: 完全を期すため、カーソルを使用して $startDate から $endDate までの日付範囲をループし、以下を挿入します。各日付をダミー テーブルに追加します:

    DECLARE @d DATE = $startDate;
    
    WHILE @d <= $endDate
    BEGIN
     INSERT INTO #dates (Month) VALUES (@d);
     SET @d = DATEADD(DAY, 1, @d);
    END;
    ログイン後にコピー

このアプローチでは、customer テーブル内のギャップに関係なく、指定された範囲内の日付の完全な範囲が動的に生成されます。その後、このダミー テーブルを一時的な日付範囲テーブルに設定するためのソースとして使用できます。

以上がソース データにギャップがあるにもかかわらず、SQL Server 2000 で完全な日付範囲テーブルを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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