2010-12-28 6 views
0

Я пытаюсь сделать базовый расчет в MS Access SQL.Использование коммутатора в 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 Funciton (Switch(Approve>0, Pass/Approve),

Сбой, Pass, утвердить и отклонить все имеют ненулевое числовое значение в еженедельном таблице, так почему они не решают в нулевое значение, если Утверждение или отклонение от 0

+0

Могут ли значения быть <0? Попробуйте утвердить <= 0 в качестве второго аргумента. – dwo

+0

В таблице нет отрицательных значений. В любом случае отрицательное значение должно приводить к Null, потому что не выполняются условия (согласно определению функции Switch). – Jono

ответ

2

решение:

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

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

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

+0

Ваша попытка вернуть строковое значение, но не кавычек вокруг него. Попробуйте что-то вроде: id> 0, «Pass/Approve». Если Pass/Approve должен быть столбцом, я бы избавился от /, и я бы также попробовал [Pass/Approve]. Слэша и таких вещей, как пространство следует избегать в именах столбцов, а использование [] в этих случаях поможет много –

+0

Альберт, я использую его как оператор разделения. Цель этого выражения - проверить, что делитель отличен от нуля. – Jono

3

В помощь Бюро говорится:

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

Смежные вопросы