我有一个传送台,看起来像这样:转移我想从转帐表中得到每个参与者的余额。查询的输出应如下所示:输出
9jyewag01#
使用 UNION ALL 以及 group by ```select person, sum(b)from(select sender person, -amount b from transferunion allselect recipient person, amount b from transfer) tgroup by person
UNION ALL
group by
因此,如果每个人分别是发送者和接收者,则每个交易都被视为余额的减少和增加。
uqjltbpv2#
你可以尝试这样的方法:
select sender,(select sum(amount) from table1 b where b.recipient=a.sender)-sum(amount) from table1 a group by sender
你可以得到每个发送者作为发送者所付出的金额减去他作为接收者所付出的金额的总和。有人告诉我和是倒数的,他是对的,所以我改变了操作数的顺序
2条答案
按热度按时间9jyewag01#
使用
UNION ALL
以及group by
```select person, sum(b)
from
(
select sender person, -amount b from transfer
union all
select recipient person, amount b from transfer
) t
group by person
uqjltbpv2#
你可以尝试这样的方法:
你可以得到每个发送者作为发送者所付出的金额减去他作为接收者所付出的金额的总和。
有人告诉我和是倒数的,他是对的,所以我改变了操作数的顺序