Visual studio 2008 执行SQL任务中的Merge语句失败
我在VisualStudioSSIS中构建它-我有两个表,每个表有三个字段。一个表是我加载每日值的临时表,另一个是生产表。我想获取每日临时表,如果生产表中存在“键”记录,我想通过将生产表中已有的值添加到临时表中的值来更新汇总值。下面是我认为可以工作的代码,但我得到一个错误“错误:0xC002F210在创建更新EMS摘要表时,执行SQL任务:执行查询”合并EMSCompliancetResummary作为目标 使用EMSE…”失败,出现以下错误:“合并语句中使用的插入列列表不能包含多部分标识符。” 有什么帮助吗 SQL代码:Visual studio 2008 执行SQL任务中的Merge语句失败,visual-studio-2008,ssis,merge,Visual Studio 2008,Ssis,Merge,我在VisualStudioSSIS中构建它-我有两个表,每个表有三个字段。一个表是我加载每日值的临时表,另一个是生产表。我想获取每日临时表,如果生产表中存在“键”记录,我想通过将生产表中已有的值添加到临时表中的值来更新汇总值。下面是我认为可以工作的代码,但我得到一个错误“错误:0xC002F210在创建更新EMS摘要表时,执行SQL任务:执行查询”合并EMSCompliancetResummary作为目标 使用EMSE…”失败,出现以下错误:“合并语句中使用的插入列列表不能包含多部分标识符。”
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)
听起来你需要删除“目标”。“从插入列表中的每一列。它已经知道您正在插入到目标中。语句的第一行标识目标表是什么
EMSComplianceSummary
,然后将其别名为target。因此,在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
没有终结者
在Merge语句的开头和结尾添加分号。我知道,开头的逗号不是强制性的(如;with CTE语句),但在过去对我有帮助