我有以下表格:
payee | payer | amount
-----------|-----------|----------
USER3 | USER1 | 150.00
USER3 | USER2 | 50.00
USER1 | USER3 | 300.00
USER2 | USER3 | 300.00
USER3 | USER6 | 100.00
我希望合并两个记录,其中收款人是第二记录的付款人,付款人是第二记录的收款人并重新计算金额。 所以我要求的结果是:
payee | payer | amount
---------- | ------------| ---------
USER1 | USER3 | 150.00
USER2 | USER3 | 250.00
USER3 | USER6 | 100.00
答案 0 :(得分:1)
大多数数据库都有AEContentMenu...
和least()
个函数,因此一种方法是:
greatest()
(那些不能使用select least(payee, payer) as payee, greatest(payee, payer) as payer,
sum(case when payee = least(payee, payer) then amount else - amount end) as amount
from t
group by least(payee, payer), greatest(payee, payer);
表达的人。)
如果您总是想要正数,可以使用子查询:
case