CASE SUM(total_of_A) WHEN 0 THEN 0 ELSE SUM(B) / SUM(total_of_A) END 是什么意思
What does CASE SUM(total_of_A) WHEN 0 THEN 0 ELSE SUM(B) / SUM(total_of_A) END mean
试图理解 CASE
(Transact-SQL) 表达式,但结果却很混乱。任何人都可以用简单的话解释以下陈述吗?
CASE SUM(total_of_A) WHEN 0 THEN 0 ELSE SUM(B) / SUM(total_of_A) END;
我read以下内容,但并没有消除混乱
CASE input_expression
WHEN when_expression THEN result_expression [ ...n ]
[ELSE else_result_expression ]
END
意思是
仅当 total_of_A
的总和不是 0
时才计算 SUM(B) / SUM(total_of_A)
,因为这会导致 除以零 异常。
它是这样工作的
case <check SUM(total_of_A)>
when <result of check is 0?>
then <output 0>
else <output the result of SUM(B) / SUM(total_of_A)>
end
这读作
如果名为 total_of_A 的列的总和为 0,则此 case 语句的结果为 0 否则,此 case 语句的结果为名为 b 的列的总和除以名为 [=12= 的列的总和]
在 SQL Server
中除以零会导致以下错误:
Msg 8134, Level 16, State 1, Line 1
Divide by zero error encountered.
所以,case statement
就是用来避免这种情况的。
无论如何,我猜这是错误的,因为 value / 0
不是 0
。我更喜欢下面的检查:
SUM(B) / NULLIF(SUM(total_of_A), 0)
因为它更短,所以 returns NULL
相反。
试图理解 CASE
(Transact-SQL) 表达式,但结果却很混乱。任何人都可以用简单的话解释以下陈述吗?
CASE SUM(total_of_A) WHEN 0 THEN 0 ELSE SUM(B) / SUM(total_of_A) END;
我read以下内容,但并没有消除混乱
CASE input_expression
WHEN when_expression THEN result_expression [ ...n ]
[ELSE else_result_expression ]
END
意思是
仅当 total_of_A
的总和不是 0
时才计算 SUM(B) / SUM(total_of_A)
,因为这会导致 除以零 异常。
它是这样工作的
case <check SUM(total_of_A)>
when <result of check is 0?>
then <output 0>
else <output the result of SUM(B) / SUM(total_of_A)>
end
这读作 如果名为 total_of_A 的列的总和为 0,则此 case 语句的结果为 0 否则,此 case 语句的结果为名为 b 的列的总和除以名为 [=12= 的列的总和]
在 SQL Server
中除以零会导致以下错误:
Msg 8134, Level 16, State 1, Line 1
Divide by zero error encountered.
所以,case statement
就是用来避免这种情况的。
无论如何,我猜这是错误的,因为 value / 0
不是 0
。我更喜欢下面的检查:
SUM(B) / NULLIF(SUM(total_of_A), 0)
因为它更短,所以 returns NULL
相反。