4-4-5 会計期間を採用しています。これに慣れていない場合は、Wikipediaで情報を見つけることができます。
これを達成するために、今後 10 年間のすべての日を含む日付テーブルを作成しました。ここにあるスクリプト (変更されていますが) を使用しました。
私のテーブルの作成スクリプトは次のとおりです。
USE [RedFridayDates];
GO
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO
CREATE TABLE [tblRedFridayAllDates] (
[DATE_ID] int NOT NULL,
[DATE] datetime NOT NULL,
[YEAR] smallint NOT NULL,
[MONTH] tinyint NOT NULL,
[DAY_OF_WEEK] tinyint NOT NULL,
[REDFRIDAY] bit NULL,
[Period] tinyint NULL,
[ForecastSales] money NULL)
ON [PRIMARY];
GO
期間は私の 4-4-5 の「月」です。
私は通常、作成した次のテンプレートを使用してクエリをリンクします。
SELECT RED.[YEAR] as [Year],
RED.PERIOD as [RF Period],
FROM TableName
INNER JOIN REDFRIDAYDATES..TBLREDFRIDAYALLDATES RED
ON RED.date =
CAST (FLOOR (CAST (TableName.Date AS FLOAT)) AS DATETIME)
私のデータベース使用のほとんどは SQL 2000 であるため、日付はすべて日時フィールドです。
これを達成するためのより効率的な方法はありますか?これは私が使用できる最高のクエリ テンプレートですか? 日付を日付時刻に変換する他の方法はどうですか? そうするより速い方法はありますか?