Sql server SSIS审核步骤遇到错误
我在SSIS包中有一个步骤,我想用另一个表(T2)中最新行的信息更新执行日志(T1)中的最新行 “Where”语句周围有一个错误Sql server SSIS审核步骤遇到错误,sql-server,ssis,Sql Server,Ssis,我在SSIS包中有一个步骤,我想用另一个表(T2)中最新行的信息更新执行日志(T1)中的最新行 “Where”语句周围有一个错误 UPDATE T1 SET [Survey_Size] = ssd.[FileName] ,Survey_Start_Date = ssd.[Start_Date] ,Survey_End_Date = ssd.[End_Date] ,[EndTime] = getdate() ,loaded = 1 FROM (SELECT
UPDATE T1
SET
[Survey_Size] = ssd.[FileName]
,Survey_Start_Date = ssd.[Start_Date]
,Survey_End_Date = ssd.[End_Date]
,[EndTime] = getdate()
,loaded = 1
FROM (SELECT max(log_sk) AS maxSk FROM T1) A
JOIN (SELECT max(PK) AS maxPK FROM T2) SS
JOIN (SELECT PK, [FileName], Start_Date, End_Date, Survey_Size FROM T2) ssd ON ss.maxPK = ssd.pk
WHERE log_sk = a.maxSk
表1如下所示:
log_sk | FileName | Survey_Size | Start_Date | End_Date
我想更新表2中的信息,如下所示,其中FileName是两者的连接键
PK | FileName | Start_Date | End_Date | Survey_Size
我用CTE重写它,因为它效率更高,可读性更强
;With LastT1 as (
Select
log_sk as ID,
Survey_Size,
Survey_Start_Date,
Survey_End_Date,
EndTime,
loaded,
ROW_NUMBER() over (order by log_sk Desc) as Row_No
From T1
), LatestT2 as (
Select
PK as ID,
[FileName],
[Start_Date],
End_Date,
Survey_Size,
ROW_NUMBER() over (order by PK Desc) as Row_No
From T2
)
Update Source
Set
Source.[Survey_Size] = LatestT2.[FileName],
Source.Survey_Start_Date = LatestT2.[Start_Date],
Source.Survey_End_Date = LatestT2.[End_Date],
Source.[EndTime] = getdate(),
Source.loaded = 1
From LastT1 as Source
Inner Join LatestT2 on Source.ID = LatestT2.ID and LatestT2.Row_No = 1
Where Source.Row_No = 1
你能提供完整的错误信息吗?另外:该声明是否在SSM中起作用?T1别名位于子查询中时看起来很奇怪。它在SSMS中不起作用-我知道某些东西处于关闭状态,但不确定SS别名的连接是否具有打开条件。这可能就是它所抱怨的。将该连接更改为“交叉连接”,谢谢@TimMylott。交叉连接工作得很好@MZEN;如果有帮助,请在答案上做标记,如果没有帮助,请发表评论。