我有一张发票项目表。单个交易可能导致多个借方项目和多个贷方项目共享相同的invoice_set_id,我需要将借方项目的总和与贷方项目的总和进行比较,并且如果sum(借方)>将invoice_set_id添加到结果集合中。总和(学分)。如果没有信用额度的行,它也应该添加到结果中。使用mySQL。谢谢你的帮助。示例表和结果如下:
invoice_item_id invoice_set_id credit_debit amount
62 a22 debit 15.00
63 a22 debit 8.00
64 a22 credit 23.00
65 b23 debit 44.00
66 c55 debit 15.00
67 c55 debit 2.00
67 c55 credit 8.00
鉴于上述情况,结果集应为:
invoice_set_id
b23
c55
说明:由于借方和贷方相等而未退还a22,因为借方但没有贷记而退还b23,并且因为借方总和大于单笔贷款而退还c55。
我感谢任何帮助。实际查询涉及更多,但我认为这个特殊问题是我需要帮助的。
答案 0 :(得分:1)
您只需使用group by
和having
:
select invoice_set_id
from t
group by invoice_set_id
having sum(case when credit_debit = 'debit' then amount else 0 end) > sum(case when credit_debit = 'credit' then amount else 0 end) ;
表达having
子句的另一种方式是:
having sum(case when credit_debit = 'debit' then amount
when credit_debit = 'credit' then - amount
else 0
end) > 0;