Как иметь диапазоны в операторе SWITCH? - PullRequest
0 голосов
/ 31 января 2019

У меня есть оператор Switch, который проверяет диапазон значений.К сожалению, когда он обнаруживает совместимое значение, он выпрыгивает из оператора Switch и не выполняет итерацию полностью, что делает данные не обязательно правильными.Как я могу обработать весь оператор Switch?

Это мой оператор Switch

Switch ((Score= 0.00), 1, (Score >0.00 & Score < (1/2)), 2, (Score >= 0.50 & Score < (2/3)), 3, (Score >= (2/3) & Score < 1.00), 4, true, 5) AS TotalScore

Проблема в том, что когда у меня есть значение, скажем, 0,60.Значение должно быть 3 (поскольку оно больше 0,50, но меньше 0,67). Однако, поскольку 0,60> 0,00, я предполагаю, что вместо этого для TotalScore установлено значение 2, поскольку это то, что я получаю.

Как написать оператор Switch, который задает диапазон значений и обрабатывает эти промежуточные значения?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 31 января 2019

& - оператор конкатенации строк в MS Access.Так что это неуместно, когда вы намереваетесь AND.

. В вашем случае вы можете упростить логику:

Switch(Score = 0.00, 1,
       Score < 1.0/2, 2, 
       Score < 2.0/3, 3,
       Score < 1.00), 4,
       true, 5) AS TotalScore

switch оценивает условия по порядку, поэтому он останавливаетсяна первом подходящем.

0 голосов
/ 31 января 2019

Разобрался.Просто нужно начать с самого высокого значения и понизиться:

Switch (Score>= 1, 5, Score >= (2/3), 4, Score>= 0.50,  3, Score> 0, 2, Score= 0, 1) AS TotalScore
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...