【问题标题】:Division in SQL ServerSQL Server 中的除法
【发布时间】:2017-09-29 14:41:03
【问题描述】:

我正在尝试在 SQL Server 中使用除法。下面的代码sn-p我试过了。

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

我也试过了

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

但我得到了错误

遇到除以零错误。
警告:空值被聚合或其他 SET 操作消除。

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

谢谢

【问题讨论】:

  • 原因是f.[Target] 的值之一是0。您可以通过告诉SQL-Server 在这些情况下要做什么来修复它。
  • 根据 Profit 和 target 的数据类型,您也可能会被整数数学所吸引。只要其中一个不是整数,你应该没问题。

标签: sql sql-server sum


【解决方案1】:

使用NULLIF避免被零除异常

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

当分母为零时,将替换为NULL

【讨论】:

    【解决方案2】:

    如果我试图确定目标的百分比(由利润/目标列推断),我会尝试类似:

      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]
    

    【讨论】:

      【解决方案3】:

      您得到的错误准确地说明了问题所在。您的代码试图除以零,这在数学上是不可能的。

      请 NULLIF 以避免此错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-23
        相关资源
        最近更新 更多