执行SQL任务中的合并语句失败

时间:2013-05-01 15:55:35

标签: visual-studio-2008 ssis merge

我在Visual Studio SSIS中构建它 - 我有两个表,每个表有三个字段。一个表是我用日常值加载的临时表,另一个是生产表。我想采用每日临时表,如果作为记录存在于产品表中,那么" Key"我想通过将prod表中已有的值添加到临时表中的值来更新汇总值。下面是我认为可以工作的代码,但是我得到错误"错误:0xC002F210在创建 - 更新EMS摘要表,执行SQL任务:执行查询" MERGE EMSComplianceTrnSummary作为目标 使用EMSE ......"失败并出现以下错误:" MERGE语句中使用的插入列列表不能包含多部分标识符。"

有什么帮助使这项工作?

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)

3 个答案:

答案 0 :(得分: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);

我还添加了一个分号作为语句终止符,因为它是必需的。

  

MERGE语句需要以分号(;)作为语句   终止。运行MERGE语句时引发错误10713   没有终结者。

答案 1 :(得分:0)

听起来你需要删除“目标”。来自插入列表中的每个列。它已经知道你正在插入目标。

答案 2 :(得分:0)

在开头和Merge语句的开头添加分号。我知道,开头的逗号不是强制性的(比如;用CTE声明),但过去曾帮助过我。