2016-05-25 5 views
0

私はサッカー移籍に関する分析プロジェクトを行っています。 FactTransfersというファクトテーブルを持つモデルがあり、それを時間ディメンションにリンクする必要がありますが、特定の日付範囲が必要です。つまり、プレーヤーを転送できる日(6月1日から9月1日まで、1月1日から1月31日)。 私はこの問題に関連するいくつかの投稿を見ましたが、それらはすべて私が必要としないコードと属性を持っています。SQLで特定の日付の時間ディメンションを作成

基本的に私が欲しいものは次のとおりです。主キーとして 日、月の 日、月の 名、 転送ウィンドウ(夏や冬)、 年。

私はあまりSQLコードに精通していないので、私は必要な結果がなくてもそれを理解しようと時間を費やしています。 ご協力いただきありがとうございます!

答えて

1

日付のDimテーブルを作成して設定するコードは次のとおりです。お役に立てれば。

CREATE TABLE [dbo].[DimDate] 
(
    [DateKey] INT primary key, 
    [Date] DATETIME, 
    [DayofMonth] TINYINT, -- Field will hold day number of Month 
    [NameofMonth] VARCHAR(9),--January, February etc 
    [TransferWindow] VARCHAR(20), -- Summer & Winter 
) 

--Specify Start Date and End date here 
--Value of Start Date Must be Less than Your End Date 

DECLARE @StartDate DATETIME = '01/01/2015' --Starting value of Date Range 
DECLARE @EndDate DATETIME = '12/31/2025' --End Value of Date Range 
DECLARE @CurrentDate AS DATETIME = @StartDate 

WHILE @CurrentDate < @EndDate 
BEGIN 

    INSERT INTO [dbo].[DimDate] 
    SELECT 
     CONVERT (char(8),@CurrentDate,112) as DateKey, 
     @CurrentDate AS Date, 
     DATEPART(DD, @CurrentDate) AS [DayOfMonth], 
     DATENAME(MM, @CurrentDate) AS [MonthName], 
     CASE WHEN (MONTH(@CurrentDate) BETWEEN 6 AND 8) OR (MONTH(@CurrentDate) =9 AND DATEPART(DD, @CurrentDate)=1) THEN 'Summer' 
      WHEN MONTH(@CurrentDate) =1 THEN 'Winter' 
      ELSE '' 
     END AS [TransferWindow] 

    SET @CurrentDate = DATEADD(DD, 1, @CurrentDate) 
END 

SELECT * FROM [DimDate] 

--DROP TABLE [DimDate] 
+0

ありがとうございました! – SMC

関連する問題