早上好,用这个和我的头撞到墙上。我希望得到一些建议。我有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。
这有意义吗?
由于
答案 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
此致
加里