如何使用T-Sql完成此任务: 如果列A> 0,(B / A)* 100?
基本上,我在将B列除以a之前检查A列是否不等于0,所以我没有得到错误。 谢谢
答案 0 :(得分:1)
这是使用案例陈述
完成的Case when A > 0 then B/A*100
else 0 end as yourfield
这假定当A不是>时,你想要显示0。 0.
但是,如果A可能是否定的,则需要考虑,是否要允许该分裂发生?如果是这样,那么你只需考虑A何为0。
答案 1 :(得分:1)
在T-SQL中,您可能希望这样做:
select (case when A <> 0 then 100 * B / cast(A as float)
end)
如果NULL
为A
,则会返回0
。这对我来说似乎很合理。
注意:
<>
的正值,则可以将>
替换为A
。A
到非整数表示的转换。 SQL Server执行整数除法,因此如果两者都是整数,则结果只是一个整数(即如果A&lt; B和A&gt; = 0,则结果为0
)。答案 2 :(得分:0)
另一个想法可能是“IFNULL”条款。
SELECT (0 / NULLIF(@yourVariable,0))
SELECT (NULLIF(@yourVariable,0)/0)
如果两个指定的表达式相等,则返回空值。
这是您的任务的一个示例:
DECLARE @variableA INT SET @variableA = 0
DECLARE @variableB INT SET @variableB = 50
SELECT (@variableB / NULLIF(CONVERT(DECIMAL(18,2),@variableA),0)) * 100
有关更多信息和更多示例,请访问MSDN
答案 3 :(得分:0)
例如我们有:
Select ( 10/ 0 ) AS value
您必须将其更改为:
Select ( 10 / NULLIF( 0, 0 ) ) AS value