没有记录时,MySql计算返回零

时间:2012-10-23 09:32:21

标签: mysql

早上好,用这个和我的头撞到墙上。我希望得到一些建议。我有3个表连接显示销售数据如下;

Select
  a._CommMonth As Month,
  Sum(a._CommDue) As Commission,
  Sum(a.`Network Paid`) As Company,
  Sum(a.Payable) As Adviser,
  c.Fee As Charge,
  Sum(a.Payable) - (c.Fee) As Total
From
  pms_payments.dbo_payments a 
  Inner Join pms_payments.dbo_nscontacts b 
  On b._Firm_Name = a._Firm_Name 
  Left Join pms_payments.dbo_clawback c 
  On b.ContactID = c.ContactID And a._CommMonth = c.Month
Where
  b.ContactID = 199
Group By
  a._CommMonth

Sum(a.Payable) - (c.Fee)As Total字段是我遇到问题的地方,如果c.fee表中没有记录,则不返回任何内容,例如100 - [No record] = 100。如果存在记录,则按预期减去该值,例如100 - 15 = 85。

这有意义吗?

由于

3 个答案:

答案 0 :(得分:1)

查看使用IFNULL

  

IFNULL(表达式1,表达式2)

     

如果expr1不为NULL,则IFNULL()返回expr1;否则它会返回   表达式2。 IFNULL()返回一个数字或字符串值,具体取决于   使用它的上下文。

这样的东西
Sum(a.Payable) - IFNULL(c.Fee,0)

答案 1 :(得分:1)

如果我理解你的问题,而不是100 - 没有记录= 100,你得到100 - 没有记录= [没有]。

假设这是正确的,那么我相信你的问题源于null与零不同(并且不是有效数字)。您可以使用IFNULL()函数将零值替换为零,并且您的减法应该有效。

如果我误解了这个问题,请告诉我。

答案 2 :(得分:1)

你好&感谢你们两个,IFNULL功能正是我所需要的。对不起,我无法接受这两个答案,真的很感激努力和时间虽然。

Sum(a.Payable) - IFNULL (c.Fee,0) As Total

此致

加里