2016-05-25 8 views
0

Ich mache ein Analyseprojekt für Fußballübertragungen. Ich habe ein Modell mit einer Faktentabelle namens "FactTransfers" und ich muss es mit einer Zeitdimension verknüpfen, aber ich brauche eine bestimmte Reihe von Daten, nämlich die Daten, an denen Spieler transferiert werden können (vom 1. Juni bis zum 1. September und vom 1. Januar bis zum 1. Januar) 31. Januar). Ich habe einige Beiträge zu dieser Angelegenheit gesehen, aber alle haben Code und Attribute, die ich nicht brauche.Erstellen einer Zeitdimension mit bestimmten Daten auf SQL

Im Grunde, was ich will, ist: Datum als Primärschlüssel, Tag des Monats, Namen des Monats, Transferfenster (Sommer oder Winter), Jahr.

Ich bin nicht zu vertraut mit SQL-Code und ich habe Stunden damit verbracht, es herauszufinden, ohne die Ergebnisse, die ich brauche. Vielen Dank im Voraus für Ihre Hilfe!

Antwort

1

Hier ist der Code zum Erstellen und Füllen Ihrer Dim-Tabelle für Termine. Hoffe das hilft.

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

Vielen Dank für Ihre Hilfe! – SMC