2015-01-14 5 views
0

(должен быть совместимый код до Access 2003)Избегайте дублирования sql Условия переключения

Извините, если это «doh!». момент (все еще обучение) ... как часть оператора SELECT У меня есть следующее поле под названием Total, целью которого для каждой записи является вычисление всего 4 предыдущих полей. Значение «0» передается в Total, если сумма равна < 1000, если нет, то действительная сумма передается.

Сокращенных мы имеем:

,IIf(
Switch(……) + 
Switch(……) + 
Switch(……) + 
Switch(……)<1000,0, 

Switch(……) + 
Switch(……) + 
Switch(……) + 
Switch(……)) 

AS Total 

В своей более расширенной версии это работа, однако, это выглядит громоздкой, так как это означает необходимость повторить начальное 4 условия переключателя дважды (один раз, если < 1000 и один раз, если не).

Есть ли способ уменьшить это?

ответ

1

Один из способов заключается в использовании подзапрос:

select iif(val < 1000, 0, val) 
from (select x.*, (switch() + . . . + switch()) as val 
     from x 
    ) as x1; 
+0

Спасибо за быстрый ответ, я проверю это. – Jim

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