我有以下UPDATE查询:
UPDATE A
SET A.EARLY_SHIFT =
(SELECT DATEPART(hour, S.SCHED_START - A.FIRST_LOGIN) * 3600
+ DATEPART(minute, S.SCHED_START - A.FIRST_LOGIN) * 60
+ DATEPART(second, S.SCHED_START - A.FIRST_LOGIN) AS Expr1)
FROM DLY_AGT_ACTIVITY AS A
INNER JOIN DLY_AGT_SCHEDULES AS S
ON A.DATE = S.DATE AND RIGHT(A.ID, 5) = RIGHT(S._ID, 5)
这在管理工作室运行完美。但是,在我的SSIS包的sql任务中,它添加了一个CROSS JOIN,如下所示:
UPDATE A
SET A.EARLY_SHIFT =
(SELECT DATEPART(hour, S.SCHED_START - A.FIRST_LOGIN) * 3600
+ DATEPART(minute, S.SCHED_START - A.FIRST_LOGIN) * 60
+ DATEPART(second, S.SCHED_START - A.FIRST_LOGIN) AS Expr1)
FROM DLY_AGT_ACTIVITY AS A
INNER JOIN DLY_AGT_SCHEDULES AS S
ON A.DATE = S.DATE AND RIGHT(A.ID, 5) = RIGHT(S._ID, 5) CROSS JOIN A
这使得查询在我的sql任务中失败。到底发生了什么事?
*我试过不使用任何别名运行,但是没有帮助。
我已经重新构造了您的更新查询,但它应该给出相同的结果。
UPDATE DLY_AGT_ACTIVITY
SET EARLY_SHIFT = DATEPART(hour, S.SCHED_START - FIRST_LOGIN) * 3600
+ DATEPART(minute, S.SCHED_START - FIRST_LOGIN)
* 60 + DATEPART(second, S.SCHED_START - FIRST_LOGIN)
FROM DLY_AGT_SCHEDULES AS S
WHERE DLY_AGT_ACTIVITY.[DATE] = S.DATE
AND RIGHT(ID, 5) = RIGHT(S._ID, 5)
你能在你的包中尝试一下,并让我知道它是否解决了SSIS问题吗?