SQL语句中的SQL除以零错误

时间:2015-06-10 13:22:17

标签: mysql sql case divide-by-zero

我是SQL的新手,可以用手。我在SELECT语句中使用以下内容得到除零错误:

pub serve

我知道我需要使用CASE,但我不确定该应用程序。

2 个答案:

答案 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)。您可以通过取出SUMCAST进一步调试它,找出您可能缺少的替代品。

如果事实证明你没有遗漏任何东西(有时总和只是零),那么这就是你如何使用案例陈述:

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一样流行。