在MS Access SQL中使用Switch

时间:2010-12-28 09:01:53

标签: ms-access ms-access-2007

我正在尝试在MS Access SQL中进行基本计算。

我有一个名为Weekly的表格,每个用户都有每周统计信息,包括以下列:UserFailPassApproveReject(以及一些不重要的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时,为什么它们不会解析为空值?

2 个答案:

答案 0 :(得分:3)

在Office帮助中说明:

  

Switch会评估所有表达式,即使它只返回其中一个表达式。因此,您应该注意不良副作用。例如,如果任何表达式的求值导致除以零错误,则会发生错误。

答案 1 :(得分:2)

解决方案:

使用Iif,因此:

SELECT Iif([Approve]>0, Pass/Approve, Null) as pass_approved_ratio
FROM Weekly

现在效果很好。我仍然想了解为什么我在Switch时遇到错误。