【问题标题】:Calculate sum of lines and compare to other table计算行的总和并与其他表进行比较
【发布时间】:2013-12-04 17:24:14
【问题描述】:

我有两张桌子

表 A:

  ID|Name |TotalAmount  
1234|Test1|120.00  
1235|Test2|1456.68

表 B:

  ID|Name  |LineAmount  
1234|Test1A|80.00  
1234|Test1B|40.00  
1235|Test2A|1000.08  
1235|Test2B|0.60  
1235|Test2C|56.00  
1235|Test2D|400.00  

我想计算具有相同 ID 的 TABLE B 行的总和并将 Total 与 TABLE A 进行比较,我应该如何解决这个问题?

编辑

我想要什么:

  1. 从两个表中获取数据
  2. 检查 ID 上的 SUM([TABLE B].LineAmount) 是否等于 [TABLE A].TotalAmount
  3. 如果没有添加另一个 TABLE B 有差异的行
  4. 平面文件中输出所有内容

我不知道如果总金额等于总金额,我该如何比较。如果是这样,它不会做额外的事情。

【问题讨论】:

  • 比较是什么意思?你想退回什么?
  • 您有一个 SSIS 标签,但我在问题中看不到 SSIS。你能编辑你的问题来解决这个 + Filipe 的评论吗?

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


【解决方案1】:

我不确定您所说的“比较”是什么意思。以下产生差异:

select coalesce(a.id, b.id) as id, a.TotalAmount, bsum.TotalLineAmount,
       (a.TotalAmount - bsum.TotalLineAmount) as difference
from TableA a full outer join
     (select b.id, sum(LineAmount) as TotalLineAmount
      from TableB b
      group by b.id
     ) bsum
     on a.id = bsum.id;

这使用 full outer join 以防某些 id 在一个表中但不在另一个表中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-05
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    相关资源
    最近更新 更多