根据某些条件将多个记录合并为一个

时间:2017-06-24 16:38:07

标签: sql sql-server join group-by

我有以下表格:

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

1 个答案:

答案 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