2013-05-01 64 views
-1

我在Visual Studio SSIS中構建了這個 - 我有兩個表,每個表都有三個字段。一張表是一張我每天加載的臨時表,另一張是生產表。我想採取每日臨時表,如果作爲記錄在prod表中由「密鑰」存在,我想通過將prod表中已有的值添加到來自臨時表的值來更新彙總值。下面是我認爲可以工作的代碼,但是我在創建更新EMS摘要表時遇到錯誤:錯誤:0xC002F210,執行SQL任務:執行查詢「MERGE EMSComplianceTrnSummary作爲目標 USING EMSE ...」失敗,出現以下錯誤錯誤:「在MERGE語句中不能包含多部分標識符插入列的列表。」執行SQL任務失敗的合併語句

任何幫助,使這項工作

SQL代碼:

MERGE EMSComplianceSummary as target 
USING EMSComplianceSummaryTemp as source ON (target.key = source.key) 
WHEN MATCHED THEN 
    UPDATE SET target.sumtoon = target.sumtoon + source.sumtoon, 
      target.summoving = target.summoving + source.summoving 
WHEN NOT MATCHED THEN 
    INSERT (target.trainkey, target.sumtoon, target.summoving) 
    VALUES (source.trainkey, source.sumtoon, source.summoving) 

回答

0

聽起來像是你需要從插入列表中的每一列刪除「目標」,它已經知道你正在插入到th e目標。

1

MERGE語句的第一行標識目標表是EMSComplianceSummary,然後將其作爲目標的別名。因此,它並不需要或您的MERGE語句的INSERT部分允許

MERGE EMSComplianceSummary as target 
USING EMSComplianceSummaryTemp as source ON (target.key = source.key) 
WHEN MATCHED THEN 
    UPDATE SET target.sumtoon = target.sumtoon + source.sumtoon, 
      target.summoving = target.summoving + source.summoving 
WHEN NOT MATCHED THEN 
    INSERT (trainkey, sumtoon, summoving) 
    VALUES (source.trainkey, source.sumtoon, source.summoving); 

我還添加了一個分號作爲語句終止,因爲它是必需的。

The MERGE statement requires a semicolon (;) as a statement terminator. Error 10713 is raised when a MERGE statement is run without the terminator.

0

在合併語句的開頭和結尾添加分號。我知道,開頭的逗號並不是強制性的(比如CTE聲明),但過去幫助過我。

相關問題