我是SQL的新手,可以用手。我在SELECT语句中使用以下内容得到除零错误:
pub serve
我知道我需要使用CASE,但我不确定该应用程序。
答案 0 :(得分:5)
您可以在以下网址中使用 NULLIF :
NULLIF(expression1, 0)
在你的情况下它将是:
SUM(Cast((replace(replace(replace (p.[Total Sales], '$', ''), '(','-'), ')','')) as money)) - SUM(Cast((replace(replace(replace (p.[Total Cost], '$', ''), '(','-'), ')','')) as money)) / NULLIF(SUM(Cast((replace(replace(replace (p.[Total Sales], '$', ''), '(','-'), ')','')) as money)),0) as new_bal
答案 1 :(得分:1)
尝试在此处执行此部分:
SUM(Cast((replace(replace(replace (p.[Total Sales], '$', ''), '(','-'), ')','')) as money))
单独在表格的select语句中。您应该发现它有时会返回零(或者NULLs
)。您可以通过取出SUM
和CAST
进一步调试它,找出您可能缺少的替代品。
如果事实证明你没有遗漏任何东西(有时总和只是零),那么这就是你如何使用案例陈述:
CASE
WHEN SUM(Cast((replace(replace(replace (p.[Total Sales], '$', ''), '(','-'), ')','')) as money)) != 0
THEN SUM(Cast((replace(replace(replace (p.[Total Sales], '$', ''), '(','-'), ')','')) as money)) - SUM(Cast((replace(replace(replace (p.[Total Cost], '$', ''), '(','-'), ')','')) as money)) / SUM(Cast((replace(replace(replace (p.[Total Sales], '$', ''), '(','-'), ')','')) as money))
ELSE 0
END as new_bal
另外,请避免在列名中使用空格或其他特殊字符。我相信MySQL的通用标准会像total_sales
一样流行。