0

早上好,用这个把我的头撞到墙上,希望能得到一些建议。我有 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。

那有意义吗?

谢谢

4

3 回答 3

1

如果我正确理解了您的问题,您得到的不是 100 - 无记录 = 100,而是 100 - 无记录 = [无]。

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

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

于 2012-10-23T09:36:59.567 回答
1

看看使用IFNULL

IFNULL(expr1,expr2)

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

就像是

Sum(a.Payable) - IFNULL(c.Fee,0)
于 2012-10-23T09:35:15.840 回答
1

您好,感谢你们,IFNULL 函数正是我所需要的。抱歉,我不能同时接受这两个答案,但非常感谢您付出的努力和时间。

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

问候

加里

于 2012-10-23T09:53:25.790 回答