【问题标题】:SQL compare 2 table datasets, return only exceptions / differences (reconciling)SQL 比较 2 个表数据集,仅返回异常/差异(协调)
【发布时间】:2014-06-09 19:25:08
【问题描述】:

寻找有关从 2 个不同表中获取数据集的最佳方法的建议,比较它们,然后只返回具有 BALANCE 差异的名称。

例如,这是我的表格:

Table A
NAME       STATE      CITY        COMPANY     BALANCE
Joe        CA         San Diego   xyz         100
John       CA         San Diego   abc         50
Jim        CA         Los Angeles xyz         35

Table B
NAME       STATE      CITY        COMPANY     BALANCE
Joe        CA         San Diego   xyz         75
John       CA         San Diego   abc         50
Jim        CA         Los Angeles xyz         40

我想回来:

NAME       STATE      CITY        COMPANY     DIFFERENCE
Joe        CA         San Diego   xyz         25
Jim        CA         Los Angeles xyz         5    

提前致谢!!!

【问题讨论】:

    标签: sql sql-server sql-server-2008 ssrs-2008-r2


    【解决方案1】:

    一个简单的内部连接在这里可以正常工作

    SELECT 
       t1.Name,
       t1.State,
       t1.City,
       ABS(t1.Balance - t2.Balance
    
    FROM 
       Table1  t1
       INNER JOIN Table2 t2
       ON t1.Name = t2.Name
         and t1.State = t2.State
         and t1.City = t2.City
         and t1.Company = t2.Company
    WHERE
       t1.Balance <> t2.Balanace
    

    一些笔记

    • 您可能需要添加一些空值处理,具体取决于您的业务规则。
    • 您可能还需要考虑使用外连接并将 where 子句移至连接 如果您想包含在一个中但不在另一个中的行

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-22
      相关资源
      最近更新 更多