从 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 个表中减去总计的主要内容,如果未能解决你的问题,请参考以下文章