Sql server 2012 合并来自两个不同数据库的两个子表

Sql server 2012 合并来自两个不同数据库的两个子表,sql-server-2012,Sql Server 2012,我不熟悉SQL SERVER 2012合并语句。我需要将来自不同数据库的两个子表合并到一个表中 数据库a: 父发票表 -因弗诺酒店 -InvDate日期时间 -客户名称varchar(50) -因瓦双 子发票数据表 -因弗诺酒店 -InvDate日期时间 -ItemName varchar(50) -数量整数 -倍率 DataBaseB:包含与上面相同的结构 现在,我希望在不丢失数据的情况下将两个子表合并到一个子表中。单个发票可能包含数量不同/相等的相同项目。如何合并这些子表 提前感谢,, Se

我不熟悉SQL SERVER 2012合并语句。我需要将来自不同数据库的两个子表合并到一个表中

数据库a:

  • 父发票表 -因弗诺酒店 -InvDate日期时间 -客户名称varchar(50) -因瓦双

  • 子发票数据表 -因弗诺酒店 -InvDate日期时间 -ItemName varchar(50) -数量整数 -倍率

  • DataBaseB:包含与上面相同的结构

  • 现在,我希望在不丢失数据的情况下将两个子表合并到一个子表中。单个发票可能包含数量不同/相等的相同项目。如何合并这些子表
  • 提前感谢,,
    Senthil

    首先,您需要能够同时查询两个表。您可能需要链接服务器或openrowset(或朋友)

    考虑到您只是想合并子表,父表是不相关的

    然后你需要弄清楚合并的逻辑。假设您希望将A合并为B。有三种情况:

    • 匹配
    • 不匹配[按目标]
    • 来源不匹配
    在每种情况下你想做什么

    设计完成后,docs()中有非常好的示例

    基本上你想要:

    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
    ;