Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server中的分区_Sql_Sql Server_Sum - Fatal编程技术网

SQL Server中的分区

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

我正在尝试在SQLServer中使用除法。我尝试了下面的代码片段

    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在这些情况下你想做什么来解决这个问题。根据利润和目标的数据类型,你也可能会被整数数学抓住。只要其中一个不是整数,您就可以了。