2013-05-01 78 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声明),但过去帮助过我。

相关问题