【问题标题】:Sum and compare columns from different tables and databases汇总和比较来自不同表和数据库的列
【发布时间】:2012-01-31 09:45:54
【问题描述】:

我有两张表要比较。它们也位于不同的数据库和服务器中。我添加了一个链接服务器,可以从服务器 1 中查询它。

Server1 上的表 1 提供了提交数据的细分。例如,ref#123 可能出现 3 次,值为 100、150 和 200(总计 450)。我想比较 Server2 上也有 ref#123 的 Table2 和总数,如果总数与 450 不同,则返回正确的记录。

希望这是有道理的!谢谢

【问题讨论】:

  • “返回正确的记录”是什么意思?
  • 可能措辞错误 - 更像是“不正确”的记录。即从table2返回记录,其中总数不等于table1的记录。

标签: sql sql-server-2008


【解决方案1】:
select *
from
(select col1, SUM(col2)
from table1
group by col1) t1 INNER JOIN
(select col1, col2
from table2) t2 ON t1.col1 = t2.col1 where t1.col2 <> t2.col2

表 1 是 ref#123 可以出现多次的表。 col2 包含值 100,150,200 e.t.c

【讨论】:

  • 我在关键字“where”附近的语法不正确:select * from ( select submission_id, sum([mileage covered]) from tbl_weekly_expenses group by submission_id ) t1 inner join ( select subid, sum(miles) from server.database.dbo.tblExpensesMileage group by subid ) t2 where t1.submission_id &gt; t2.subid
  • @Zohaib -1,检查结果 - 几乎会有交叉连接,并且其中一张表不会遗漏结果
【解决方案2】:
SELECT *
FROM
(
    SELECT
      ref,
      SUM(values) values
    FROM Server1.YourDb1.YourSchema.TableBreakdowns
) t1
FULL JOIN Server2.YourDb1.YourSchema.TableTotals t2
  ON t1.ref = t2.ref
WHERE t1.values <> t2.values OR t1.ref is null OR t2.ref is null

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 2017-09-02
    相关资源
    最近更新 更多