Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL报表查询_Mysql - Fatal编程技术网

MySQL报表查询

MySQL报表查询,mysql,Mysql,我有以下db模式(我只提到查询所需的每个表的列): 对于一组托收案例,我需要获得支票付款所赚取的总利息。 在为我的收款案例标准集检索所有账单记录之后,我目前正在内存中进行这些计算。对于每张账单,如果收到的支票总数大于账单金额,我只需将收到的支票总数-账单金额相加 例如,我的total received查询如下所示(收集案例1和2): 我不确定这是不是你的意思 select IF(sum(payment.amount) > bill.amount, sum(payment.amount)-b

我有以下db模式(我只提到查询所需的每个表的列):

对于一组托收案例,我需要获得支票付款所赚取的总利息。 在为我的收款案例标准集检索所有账单记录之后,我目前正在内存中进行这些计算。对于每张账单,如果收到的支票总数大于账单金额,我只需将收到的支票总数-账单金额相加

例如,我的total received查询如下所示(收集案例1和2):


我不确定这是不是你的意思

select IF(sum(payment.amount) > bill.amount, sum(payment.amount)-bill.amount, 0) as interest  
from bills bill
cross join payments payment inner join check_payments checkpayment 
on 
payment.id=checkpayment.payment_id 
where payment.type='CH'
 and payment.bill_id=bill.id 
 and (bill.collection_case_id in (1 , 2))

只是尝试了一下,给出了错误的结果,可能总数(payment.amount)是收款案例1和2中所有账单的所有付款的总和?我需要它来检查每个账单的金额是否<特定账单的所有付款之和如果您想要的结果不限于收款案例1和2,您可以删除该条件。我这样做..这不是我的意思,(1,2)例如,用户选择收款案例..但似乎查询金额(payment.amount)>bill.amount test未能达到我的目的..我认为它将所有账单的付款相加,然后对每个账单进行测试案例1:账单总额-87.20,收到-161,利息-117.40,案例2:账单总额-160.04,收到-30,利息-0,您推荐的查询的总兴趣为147.40,假设为117.40。您可以在@sqlfiddle.com发布一些示例数据吗?
select sum(payment.amount) as received 
from bills bill
cross join payments payment inner join check_payments checkpayment 
on 
payment.id=checkpayment.payment_id 
where payment.type='CH'
 and payment.bill_id=bill.id 
 and (bill.collection_case_id in (1 , 2))
select IF(sum(payment.amount) > bill.amount, sum(payment.amount)-bill.amount, 0) as interest  
from bills bill
cross join payments payment inner join check_payments checkpayment 
on 
payment.id=checkpayment.payment_id 
where payment.type='CH'
 and payment.bill_id=bill.id 
 and (bill.collection_case_id in (1 , 2))