加载时间维度表t-sql

时间:2016-04-21 13:45:44

标签: sql-server tsql time dimension datamart

我正在尝试(综合)填充星型数据集市中的空时间维度表,之后它应该如下所示:

enter image description here

我正在使用以下T-SQL代码:

    /*
STEP 3
Populate DIM_TIJD table with date and its derrived values data
*/
USE Fuzzy_DM_Robin
--DECLARE DATE VARIABLES FOR DATE PERIOD
DECLARE @StartDate datetime = '01/01/1995'
DECLARE @EndDate datetime   = '01/01/2026'
DECLARE @DateInProcess datetime
SET @DateInProcess      = @StartDate
WHILE @DateInProcess    < = @EndDate
BEGIN
    SET NOCOUNT ON
--LOOP THROUGH INDIVIDUAL DATES DEFINED BY TIME PERIOD
        INSERT INTO DIM_TIJD (
        [DATUM_ID],
        [DATUM],
        [DAG_VD_WEEK],
        [WEEKNR],
        [MAAND],
        [MAAND_OMSCHRIJVING],
        [LAATSTE_DAG_MAAND],
        [KWARTAAL],
        [JAAR]
        )
        VALUES (
        CAST ( @DateInProcess AS numeric (10) ),
        @DateInProcess,
        CONVERT(varchar(10), @DateInProcess, 110) + ', ' + DATENAME(WEEKDAY, @DateInProcess ),
        DATEPART (wk, @DateInProcess),
        MONTH( @DateInProcess),
        CAST(YEAR(@DateInProcess) as varchar(4)) + ' - ' + DATENAME(MONTH, @DateInProcess ),
        DATEPART (dd, EOMONTH ( @DateInProcess)),
        DATENAME( QUARTER, @DateInProcess ),
        YEAR(@DateInProcess))
END

然而,它不会加载。我收到的消息是:

消息1:

  

字符串或二进制数据将被截断

和消息2:

  

[执行SQL任务]错误:执行查询&#34; / *   第3步   用日期填充DIM_TIJD表并且它...&#34;失败并出现以下错误:&#34;语句已终止。&#34;。可能的失败原因:查询问题,&#34; ResultSet&#34;属性设置不正确,参数设置不正确或连接未正确建立。&#34;

我做错了什么? SSMS中没有底层表明代码有问题,我已经检查了表和代码的所有varchar长度是相同的。我试图摆弄结果集设置,但这只给了我另一条消息:

消息3:

  

[执行SQL任务]错误:为ResultSetType返回的结果绑定数量无效:&#34; ResultSetType_SingleRow&#34;。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

@DateInProcess变量需要作为循环的一部分递增。

尝试将其添加为循环的最后一行(在END之前):

SET @DateInProcess = DATEADD(DAY, 1, @DateInProcess)