5
select p.partnerid,
sum(case when c.amount is not null then c.amount else 0 end) as amount,
sum(case when c.netamt is not null then c.netamt else 0 end) as total,
sum(case when (c.netamt - d.paidamount) is not null then (c.netamt - d.paidamount) else 0 end) as remainingamount,
sum(case when d.paidamount is not null then d.paidamount else 0 end) as paidamt
from customerinfo c
left join dailypayments d on c.accno = d.accno
right join partnerinfo p on c.partnerid = p.partnerid
where (d.paiddate is null or (d.paiddate >= '2011-3-15' and d.paiddate <= '2012-6-13')) and  p.manager = 7 group by p.partnerid

从上面的查询中,我需要从两个表中减去第二个表中没有值的两个值。

为了更好地理解,请参见下图。

图片

4

1 回答 1

15

使用该IFNULL()函数删除case并简化您的计算:

sum(c.netamt - ifnull(d.paidamount, 0)) as remainingamount,
于 2012-06-21T13:06:53.470 回答