从 2 个表中减去总计

Posted

技术标签:

【中文标题】从 2 个表中减去总计【英文标题】:Subtract Totals from 2 tables 【发布时间】: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 改变措辞。 【参考方案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

【讨论】:

以上是关于从 2 个表中减去总计的主要内容,如果未能解决你的问题,请参考以下文章

MySQL INSERT ... 从 1 个表中选择 2 个表

mysql插入tbl(从2个表中选择)

从 2 个表中获取数据到 excel 表中

从 2 个表中召回的问题,按 id,客户存入了多少,在表中

使用 mysql 别名从 2 个表中选择列

从 2 个表中获取记录数 - 一对多关系