SQL Server中的分区
我正在尝试在SQLServer中使用除法。我尝试了下面的代码片段SQL Server中的分区,sql,sql-server,sum,Sql,Sql Server,Sum,我正在尝试在SQLServer中使用除法。我尝试了下面的代码片段 SELECT m.[Profit] / f.[Target] 我也试过了 SELECT SUM(m.[Profit] / f.[Target]) 但是我得到了错误 遇到被零除的错误。 警告:通过聚合或其他集合操作消除空值 出现这种情况的原因是什么?我如何修复它?在线建议的修复程序说,这段代码应该可以正常工作,但事实并非如此 谢谢使用NULLIF避免被零除异常 SELECT SUM(m.[Profit] / NU
SELECT m.[Profit] / f.[Target]
我也试过了
SELECT SUM(m.[Profit] / f.[Target])
但是我得到了错误
遇到被零除的错误。警告:通过聚合或其他集合操作消除空值 出现这种情况的原因是什么?我如何修复它?在线建议的修复程序说,这段代码应该可以正常工作,但事实并非如此
谢谢使用
NULLIF
避免被零除异常
SELECT SUM(m.[Profit] / NULLIF(f.[Target],0))
当分母为零时,它将被替换为
NULL
使用NULL如果
避免被零除异常
SELECT SUM(m.[Profit] / NULLIF(f.[Target],0))
当分母为零时,它将被替换为
NULL
得到的错误确切地说明了问题所在。您的代码试图除以零,这在数学上是不可能的
请为空以避免此错误。您得到的错误确切地说明了问题所在。您的代码试图除以零,这在数学上是不可能的
请为空以避免此错误。如果我试图确定目标的百分比(由利润/目标列推断),我会尝试以下操作:
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]
如果我试图确定目标的百分比(由利润/目标列推断),我会尝试以下方法:
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.[Target]
的一个值为0。你可以通过告诉SQL Server在这些情况下你想做什么来解决这个问题。根据利润和目标的数据类型,你也可能会被整数数学抓住。只要其中一个不是整数,您就可以了。原因是f.[Target]
的其中一个值为0。你可以通过告诉SQL Server在这些情况下你想做什么来解决这个问题。根据利润和目标的数据类型,你也可能会被整数数学抓住。只要其中一个不是整数,您就可以了。