我是SQL SERVER 2012 MERGE语句的新手。我需要将来自不同数据库的两个子表合并到一个表中。
DatabaseA:
父发票表 -InvNo int -InvDate日期时间 -CustomerName varchar(50) -InvVal double
Child InvoiceDet表 -InvNo int -InvDate DateTime -ItemName varchar(50) -Qty int -Rate double
DataBaseB:包含相同的上述结构。
提前致谢, 塞特希
答案 0 :(得分:0)
首先,您需要能够同时查询这两个表。您可能需要链接服务器或openrowset(或朋友)。
看看你想如何合并子表,父表是无关紧要的。
然后你需要弄清楚合并的逻辑。假设您希望将A合并为B.有三种情况:
在每种情况下你想做什么?
完成设计后,文档(http://technet.microsoft.com/en-us/library/bb510625.aspx)有很好的例子。
基本上你想要:
MERGE child as target
USING (select ... from databaseA.dbo.child) as source (...)
ON (conditions)
WHEN MATCHED THEN
UPDATE SET target.v = source.v
WHEN NOT MATCHED BY TARGET THEN
INSERT (v) VALUES (source.v)
-- WHEN NOT MATCHED BY SOURCE THEN
-- Don't delete anything
;