情况无法确定相等的值

时间:2016-02-26 14:56:14

标签: sql-server-2008 rounding case-when

我正在尝试确认我的数据库正在计算的值是否正确。我写的查询给了我这个信息。 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语句无法正常工作。最初我认为这是因为我需要舍入我的小数位,但确认的结果仍然显示任何没有零的值的“错误”。我提供了相关列的屏幕截图,以便您查看查询结果。

enter image description here

CASE WHEN的问题是因为零或舍入而不是根据SQL使结果相等吗?

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

提前致谢!

1 个答案:

答案 0 :(得分:1)

这个答案有点推测,但您可以尝试的一件事是将ImageView语句的LHS和RHS仅比较小数点后第二位:

CASE