【问题标题】:Subtract Totals from 2 tables从 2 个表中减去总计
【发布时间】:2014-01-08 18:20:56
【问题描述】:

我有2张表存款和提款

Deposit Table:
AccountNumber  Amount
1               200
1               400
1               150
           Total=750

Withdrawal Table:
AccountNumber  Amount
1               100
1               300
1               150
           Total=550

我需要一个查询来汇总每个表的总数并减去(存款-取款)Group BY AccountNumber 为 (750-550) = 200,例如:

TotalBalance Table:
AccountNumber  Amount
1               200

我已经尝试过 Karamafrooz 答案

选择 SUM(d.Ammount) - SUM(w.Ammount) 从存款作为 d 内部加入 WithDrawal 作为 w d.AccountNumber=w.AccountNumber 按 d.AccountNumber 分组

但是我得到了错误的值

抱歉,现在我有第三张桌子跟注利润:

Profit Table:
AccountNumber  Amount
1               100
1               200
1               150
           Total=450

我需要总金额为(存款+利润-提款) 我怎样才能做到这一点? jim31415 解决方案非常适合第一种情况

【问题讨论】:

  • 要求代码的问题必须表明对所解决问题的最低理解。包括尝试的解决方案,以及它们为什么不起作用。
  • 我是 sql server 新手,找不到解决方案
  • 您找不到解决方案,或者您无法尝试任何事情?
  • @jcolebrand 我复制并粘贴关闭原因。我将截断询问为什么它不起作用的部分。
  • @jcolebrand 公平地说,Fresh 几乎一字不差地复制了接近的原因。所以也许你应该呼吁 meta 改变措辞。

标签: sql-server


【解决方案1】:

这使用子查询来获取每个表中每个帐户的总计。然后将金额相加。请注意,取款金额被否定,sum(-d.Amount)

select 
   AccountNumber,
   sum(Amount) as Balance
from (
   select d.AccountNumber as AccountNumber, sum(d.Amount) as Amount from Deposit d group by d.AccountNumber
   union
   select d.AccountNumber, sum(-d.Amount) from Withdrawal d group by d.AccountNumber
) as t
group by AccountNumber

【讨论】:

    猜你喜欢
    • 2014-12-22
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多