我有两个(链接的) sql服务器,它们的设置基本相同,但它们的内容不同。我想要做的是获取两个表(每个服务器一个)并将它们合并,这样就没有重复的ID (例如,没有重复的fname),并且将count添加到一起。
他们看起来就像
SERV1.DB1.dbo.Table:
| fname       | count |
----------------------
| 'file1.txt' | 10    |
| 'file2.txt' | 5     |
| 'file3.txt' | 35    |
SERV2.DB2.dbo.Table:
| fname       | count |
----------------------
| 'file1.txt' | 40    |
| 'file2.txt' | 150   |我想写一个输出的select
| fname       | count |
----------------------
| 'file1.txt' | 50    |
| 'file2.txt' | 155   |
| 'file3.txt' | 35    |我不想加入工会也不想以我想要的方式合并他们。
编辑
fname可能会根据情况而变化(读: will)。fname有不同的排序(这是一个没有问题,但值得一提)select来获得这两个表。我可以创建临时桌子,但如果我没有临时桌子的话,我会更喜欢。发布于 2013-12-04 10:20:52
你可以用JOIN轻松地做这件事
SELECT table1.fname fname, table1.Count + table2.count Count
FROM SERV1.DB1.dbo.Table table1
    FULL OUTER JOIN SERV2.DB2.dbo.Table table2 ON table1.fname=table2.fname编辑:区分大小写/不敏感取决于列排序规则。
发布于 2013-12-04 10:44:02
根据吉安明的回答,这是我自己的建议:
SELECT
     COALESCE(t1.fname,t2.fname) fname,
     COALESCE(t1.Count,0) + COALESCE(t2.count,0) Count
FROM
   SERV1.DB1.dbo.Table t1 
    FULL OUTER JOIN
   SERV2.DB2.dbo.Table t2
    ON t1.fname=t2.fname这确保来自两个表的所有fname值都出现在结果中,甚至那些仅出现在SERV2表中的值也是如此。
https://stackoverflow.com/questions/20372487
复制相似问题