2013-07-30 273 views
0

我是SQL SERVER 2012 MERGE語句的新手。我需要將來自不同數據庫的兩個子表合併到一個表中。合併來自兩個不同數據庫的兩張子表

DatabaseA:

  1. 父發票表 -InvNo INT -InvDate日期時間 -CustomerName VARCHAR(50) -InvVal雙

  2. 兒童InvoiceDet表 -InvNo INT -InvDate DateTime -ItemName varchar(50) -Qty int -Rate double

DataBaseB:包含相同的上述結構。

  1. 現在我想將兩個子表合併到一個子表中而不丟失數據。一張發票可能包含不同數量/相同數量的相同商品。我如何合併這些子表。

由於提前, 塞特希

回答

0

首先,你需要能夠同時查詢兩個表。您可能需要鏈接的服務器或openrowset(或朋友)。

看着你只是想合併子表,父表是不相關的。

然後你需要弄清楚合併的邏輯。比方說,你想合併一個爲B.有三種情況:

  • 相合
  • NOT MATCHED [BY TARGET]
  • NOT MATCHED BY SOURCE

你想什麼在每種情況下做?

完成設計後,文檔(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 
; 
相關問題