2017-09-29 61 views
0

我想在SQL Server中使用分区。我试过下面的代码片段。在SQL Server中的分区

SELECT m.[Profit]/f.[Target] 

而且我自己也尝试

SELECT SUM(m.[Profit]/f.[Target]) 

,但我得到碰到

除以零错误的错误。
警告:空值由集合或其他SET操作消除。

这是什么原因,我该如何解决?建议的修补程序在线说,此代码应该可以工作,但不会。

感谢

+1

的原因是,'F中的值之一[目标。 ]'是0.你可以通过告诉SQL-Server在这种情况下你想要做什么来修复它。 –

+0

根据利润和目标的数据类型,您也可能被整数数学捕捉到。只要其中一个不是整数,你应该可以。 – HLGEM

回答

3

使用NULLIF避免被零异常分为

SELECT SUM(m.[Profit]/NULLIF(f.[Target],0)) 

当分母为零,则它将与NULL

0

你指定什么是问题的错误所取代。你的代码试图用零来除,这在数学上是不可能的。

请使用NULLIF来避免此错误。

1

如果我试图确定的目标%(按利润/目标列推断),我会尝试这样的:

SELECT 
    CASE WHEN ISNULL(f.[Target],0) = 0 THEN NULL -- or whatever you need to return when the target value is undefined, or it is 0 
    ELSE m.[Profit]/f.[Target] END AS [result]