Использование Switch в MS Access SQL - PullRequest
0 голосов
/ 28 декабря 2010

Я пытаюсь выполнить базовые вычисления в MS Access SQL.

У меня есть таблица с именем Weekly, с еженедельной статистикой для каждого пользователя, которая включает следующие столбцы: User, Fail, Pass, Approve и Reject (и некоторые неважные значения идентификатора и даты).

Когда я выполняю следующий запрос:

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),

Fail, Pass, Approve and Rejectвсе они имеют ненулевое числовое значение в таблице Weekly, так почему бы им не разрешить нулевое значение, когда Approve или Reject равны 0?

Ответы [ 2 ]

3 голосов
/ 06 сентября 2012

В справке Office говорится:

Коммутатор оценивает все выражения, даже если возвращает только одно из них.По этой причине вам следует следить за нежелательными побочными эффектами.Например, если при вычислении любого выражения возникает ошибка деления на ноль, возникает ошибка.

2 голосов
/ 28 декабря 2010

Решение:

Используйте Iif, таким образом:

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

Пока все отлично работает. Я все еще хотел бы понять, почему я получаю ошибки с Switch, хотя.

...