0

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

在此处输入图像描述

我为此使用以下 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 任务] 错误:执行查询“/* STEP 3 Populate DIM_TIJD table with date and it...”失败,出现以下错误:“语句已终止。”。可能的失败原因:查询有问题,“ResultSet”属性设置不正确,参数设置不正确,或连接未正确建立。”

我究竟做错了什么?SSMS 中没有下划线表示代码有问题,我检查了表和代码的所有 varchar 长度是否相同。我试过摆弄结果集设置,但这只会给我另一条消息:

消息 3:

[执行 SQL 任务] 错误:为 ResultSetType 返回的结果绑定数无效:“ResultSetType_SingleRow”。

先感谢您!

4

1 回答 1

0

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

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

SET @DateInProcess = DATEADD(DAY, 1, @DateInProcess)
于 2016-04-30T18:36:26.740 回答