我有以下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任务中的查询失败。到底是怎么回事?
*我尝试过没有任何别名的运行,这没有帮助。
答案 0 :(得分:1)
我重新组织了您的更新查询,但它应该给出相同的结果。
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问题,请告诉我吗?