尝试合并两个表时,如果行不匹配,我如何根据订单插入行。例如,在table_2中,我有一个“类型”列(样本值1,2,3等),所以当我为不匹配的代码插入时,我需要首先插入类型为1的记录,然后是2等。
到目前为止,我尝试了下面的代码
WITH tab1 AS
(
select * From TABLE_2 order by Type
)
merge tab1 as Source using TABLE_1 as Target on Target.Code=Source.Code
when matched then update set Target.Description=Source.Description
when not matched then insert (Code,Description,Type)
values (Source.Code,Source.Description,Source.Type);
但我得到“ORDER BY子句在视图,内联函数,派生表,子查询和公用表表达式中无效,除非还指定了TOP或FOR XML。”由于在子查询中使用order by而出错。
那么在合并两个表时如何根据订单插入记录?
提前致谢。
答案 0 :(得分:0)
更改
select *
到
select top 100 percent
这将允许您在第一个选择
中使用ORDER BY