我正在尝试在MS Access SQL中进行基本计算。
我有一个名为Weekly
的表格,每个用户都有每周统计信息,包括以下列:User
,Fail
,Pass
,Approve
和Reject
(以及一些不重要的id和日期值)。
当我执行以下查询时:
SELECT User, Switch(Approve>0,Pass/Approve, Approve = 0, Null) AS passed_approved_ratio, Switch(Reject>0,Fail/Reject, Reject= 0, Null) AS fail_reject_ratio
FROM Weekly
我在几个结果行中得到#ERROR
值。
我在Switch
功能Switch(Approve>0, Pass/Approve)
功能中使用和不使用第二个条件+值时尝试过它({{1}},
“失败”,“通过”,“批准”和“拒绝”都在“周”表中具有非空数值,那么当“批准”或“拒绝”为0时,为什么它们不会解析为空值?
答案 0 :(得分:3)
在Office帮助中说明:
Switch会评估所有表达式,即使它只返回其中一个表达式。因此,您应该注意不良副作用。例如,如果任何表达式的求值导致除以零错误,则会发生错误。
答案 1 :(得分:2)
解决方案:
使用Iif
,因此:
SELECT Iif([Approve]>0, Pass/Approve, Null) as pass_approved_ratio
FROM Weekly
现在效果很好。我仍然想了解为什么我在Switch
时遇到错误。