当大于零时,将A列分开

时间:2014-06-06 13:23:21

标签: sql sql-server

如何使用T-Sql完成此任务: 如果列A> 0,(B / A)* 100?

基本上,我在将B列除以a之前检查A列是否不等于0,所以我没有得到错误。 谢谢

4 个答案:

答案 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)

如果NULLA,则会返回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