我想在SQL Server中使用分区。我试过下面的代码片段。在SQL Server中的分区
SELECT m.[Profit]/f.[Target]
而且我自己也尝试
SELECT SUM(m.[Profit]/f.[Target])
,但我得到碰到
除以零错误的错误。
警告:空值由集合或其他SET操作消除。
这是什么原因,我该如何解决?建议的修补程序在线说,此代码应该可以工作,但不会。
感谢
我想在SQL Server中使用分区。我试过下面的代码片段。在SQL Server中的分区
SELECT m.[Profit]/f.[Target]
而且我自己也尝试
SELECT SUM(m.[Profit]/f.[Target])
,但我得到碰到
除以零错误的错误。
警告:空值由集合或其他SET操作消除。
这是什么原因,我该如何解决?建议的修补程序在线说,此代码应该可以工作,但不会。
感谢
使用NULLIF
避免被零异常分为
SELECT SUM(m.[Profit]/NULLIF(f.[Target],0))
当分母为零,则它将与NULL
你指定什么是问题的错误所取代。你的代码试图用零来除,这在数学上是不可能的。
请使用NULLIF来避免此错误。
如果我试图确定的目标%(按利润/目标列推断),我会尝试这样的:
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]
的原因是,'F中的值之一[目标。 ]'是0.你可以通过告诉SQL-Server在这种情况下你想要做什么来修复它。 –
根据利润和目标的数据类型,您也可能被整数数学捕捉到。只要其中一个不是整数,你应该可以。 – HLGEM