2015-02-11 31 views
0

一个SELECT条款,是给我以0误差鸿沟以下是部分:避免除零误差多个case语句

(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 

回答

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))ENDAS 'MTBUR'

总和将是NULL

1

这个怎么样?让你的CASE表达式的其他部分为空,因此,如果没有需要另一个END结束巢式病例行,其中描述=“I”

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

谢谢....这工作。 – 2015-02-11 22:41:28