Sql server 当0然后0时,案例总和(A的总和)是什么意思?其他总和(B)/总和(A的总和)结束时意味着什么
试图理解Sql server 当0然后0时,案例总和(A的总和)是什么意思?其他总和(B)/总和(A的总和)结束时意味着什么,sql-server,tsql,case,case-expression,Sql Server,Tsql,Case,Case Expression,试图理解CASE(Transact-SQL)表达式,但最终导致了很多混乱。谁能用简单的话解释一下下面的陈述 CASE SUM(total_of_A) WHEN 0 THEN 0 ELSE SUM(B) / SUM(total_of_A) END; 我明白了以下几点,但这并不能消除混乱 CASE input_expression WHEN when_expression THEN result_expression [ ...n ] [ELSE else_result_express
CASE
(Transact-SQL)表达式,但最终导致了很多混乱。谁能用简单的话解释一下下面的陈述
CASE SUM(total_of_A) WHEN 0 THEN 0 ELSE SUM(B) / SUM(total_of_A) END;
我明白了以下几点,但这并不能消除混乱
CASE input_expression
WHEN when_expression THEN result_expression [ ...n ]
[ELSE else_result_expression ]
END
这意味着
只有当total\u of A
的和不是0
时,才计算SUM(B)/SUM(total\u 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\u of A
的和不是0
时,才计算SUM(B)/SUM(total\u 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的列的和除以名为total_of_A的列的和,如下所示
如果名为total_of_A的列的和为0,则此case语句的结果为0,否则此case语句的结果为名为b的列的和除以SQL Server中名为total_of_A的列的和除以0会导致以下错误: Msg 8134,16级,状态1,第1行 遇到被零除的错误 因此,
case语句
用于避免此类情况
无论如何,我想这是错误的,因为value/0
不是0
。我更喜欢下面的检查:
SUM(B) / NULLIF(SUM(total_of_A), 0)
因为它较短,并返回
NULL
。在SQL Server
中被零除会导致以下错误:
Msg 8134,16级,状态1,第1行
遇到被零除的错误
因此,case语句
用于避免此类情况
无论如何,我想这是错误的,因为value/0
不是0
。我更喜欢下面的检查:
SUM(B) / NULLIF(SUM(total_of_A), 0)
因为它较短,返回的是
NULL
。这看起来像是有人试图避免被零除。当a的总和为0时,如果不是0,则返回0,然后返回b的总和超过a的总和。这看起来像是有人试图避免被零除。当a的总和为0时,返回0如果不是0,则返回b的总和超过a的总和