我在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)
答案 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声明),但过去曾帮助过我。