无法确定相等值时的情况

Case When unable to determine equal values

我正在尝试确认我的数据库计算的值是否正确。我写的查询给了我这些信息。 Pull_through 列由数据库生成,标记为 CalcQuantity 的列是我用来检查数据库的列。

SELECT RPT.PayPeriod
      ,RPT.Employee_Id
      ,RPT.Plan_Id
      ,RPT.Commission
      ,Pull_through
      ,Modifier
      ,ROUND(Commission * Modifier,2) AS CalcQuantity
      ,CASE WHEN Pull_through = Commission * Modifier then 'Correct'
            WHEN Pull_through <> Commission * Modifier then 'ERROR'
            END AS Confirmed
FROM Compensation..IN_Pullthrough PULL
 left join RPT
  on PULL.Employee_id = RPT.Employee_Id and PULL.Pay_Date = RPT.PayPeriod
WHERE PULL.Pay_Date = '2016-02-12'

我可以通过视觉确认计算正在运行,但 CASE WHEN 语句无法正常运行。最初我认为这是因为我需要四舍五入我的小数位,但确认结果仍然显示 "ERROR" 对于任何不为零的值。我提供了相关列的屏幕截图,以便您查看查询结果。

CASE WHEN 的问题是因为零,还是根据 SQL 四舍五入不使结果相等?

我必须每个月更新信息和 运行 数据库的存储过程来计算新结果,这就是我构建此审计的原因。

提前致谢!

这个答案有点推测性,但您可以尝试比较 CASE 语句的左轴和右轴,只比较小数点后第二位:

CASE WHEN ROUND(Pull_through, 2) = ROUND(Commission * Modifier, 2)
    THEN 'Correct'
    ELSE 'ERROR'
END AS Confirmed