多个案例陈述避免除以0错误

时间:2015-02-11 22:19:06

标签: sql-server case divide-by-zero

以下是SELECT子句的一部分,它给出了除以0的错误:

(SUM([Hours])/(SUM(CASE WHEN J.Description <> 'I' THEN 1 ELSE 0 END))

以下是我如何纠正除以0的分母:

CASE WHEN(SUM(CASE WHEN J.Description <> 'I' THEN 1 ELSE 0 END)) = 0 THEN 1 ELSE SUM(CASE WHEN J.Description <> 'I' THEN 1 ELSE 0 END))  AS 'MTBUR'

这给我留下了语法错误。我做错了什么?

所以基本上如果SUM = 0那么我希望分母为1 ELSE

SUM(CASE WHEN J.Description <> 'I' THEN 1 ELSE 0 END

2 个答案:

答案 0 :(得分:1)

这个怎么样?让case表达式的else部分为NULL,如果没有描述='I'

的行,则总和将为NULL
SUM([Hours]) /  ISNULL(SUM(CASE WHEN J.Description <> 'I' THEN 1 END), 1)

答案 1 :(得分:1)

CASE WHEN(SUM(CASE WHEN J.Description <> 'I' THEN 1 ELSE 0 END)) = 0 THEN 1 ELSE SUM (CASE WHEN J.Description <> 'I' THEN 1 ELSE 0 END)) 结束 AS 'MTBUR'

需要另一个END来结束嵌套案例