无法确定相等值时的情况
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
我正在尝试确认我的数据库计算的值是否正确。我写的查询给了我这些信息。 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