使用多个 case 语句避免除以 0 错误
Avoiding Divide By 0 Error With Multiple Case Statements
以下是 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
这个怎么样?将 case 表达式的 else 部分设置为 NULL,这样如果没有 Description = 'I'
的行,总和将为 NULL
SUM([Hours]) / ISNULL(SUM(CASE WHEN J.Description <> 'I' THEN 1 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))
结束 AS 'MTBUR'
需要另一个 END
来结束嵌套案例
以下是 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
这个怎么样?将 case 表达式的 else 部分设置为 NULL,这样如果没有 Description = 'I'
的行,总和将为 NULLSUM([Hours]) / ISNULL(SUM(CASE WHEN J.Description <> 'I' THEN 1 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))
结束 AS 'MTBUR'
需要另一个 END
来结束嵌套案例