我有一张发票项目表。一次交易可能会导致多个借方项目和多个贷方项目共享同一发票集id,我需要将借方项目的总和与贷方项目的总和进行比较,如果总和(借方)>总和(贷方),则将发票集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因借方之和大于单贷方而返回。
我很感激你的帮助。实际的查询更复杂,但我认为这个问题就是我需要帮助的全部。
最佳答案
您只需使用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;
关于mysql - 基于行总和与另一个字段值比较的mySQL选择,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21973738/