Sql 大于零时将列A除法

Sql 大于零时将列A除法,sql,sql-server,Sql,Sql Server,如何使用T-Sql完成此任务: 如果列A>0,B/A*100 基本上,在将列B除以A之前,我检查列A是否不等于0,这样我就不会得到错误。 谢谢这是通过案例陈述来完成的 Case when A > 0 then B/A*100 else 0 end as yourfield 这假定您希望在A不大于0时显示0 但是,如果A可能为负值,则需要考虑,是否允许进行分割?如果是这样,那么您只需要考虑T-SQL中的A是0时,,您可能想做: select (case when A <> 0

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

基本上,在将列B除以A之前,我检查列A是否不等于0,这样我就不会得到错误。
谢谢

这是通过案例陈述来完成的

Case when A > 0 then B/A*100
else 0 end as yourfield
这假定您希望在A不大于0时显示0


但是,如果A可能为负值,则需要考虑,是否允许进行分割?如果是这样,那么您只需要考虑T-SQL中的A是0时,

,您可能想做:

select (case when A <> 0 then 100 * B / cast(A as float)
        end)
如果A为0,则将返回NULL。这对我来说似乎是合理的

注:

如果只想考虑A的正值,则可以替换为>。 请注意将A转换为非整数表示形式。SQL Server执行整数除法,因此如果两者都是整数,则结果仅为整数,即如果A=0,则结果为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
有关更多信息和示例,您可以访问

例如,我们有:

 Select ( 10/ 0 ) AS value
您必须将其更改为:

 Select ( 10 / NULLIF( 0, 0 ) ) AS value

你需要更具体一些。你有疑问还是程序?如果它是0呢。选择其他内容?与您下次询问时类似,请与我们分享,您迄今为止尝试了哪些内容,您通过何种研究或互联网搜索自行解决了问题。另外,请提供一些额外的信息,确切的问题是什么,或者我们应该澄清什么来帮助您解决问题。失败尝试中的一些代码片段也会有所帮助。提前谢谢