2015-07-28 4 views
0

Я использую Access для запуска запросов в базе данных dbo_item. Он содержит столбец с именем itm_class, который содержит числа 1-100. Он также содержит столбцы itm_len, itm_wid, itm_hgt, pal_len, pal_wid, pal_hgt. В зависимости от номера класса элемента мне нужно его для вычисления объема либо по размеру, либо по размерам поддона. Я пробовал несколько разных вещей, но я не уверен, как заставить оператор If работать. Любая помощь будет оценена по достоинству.Если оператор SQL вызывает ошибку

I.E. Если itm_class равен 1,5,22,45,67,89,97,98,99,100, то объем равен (itm_len * itm_wid * itm_hgt), а для всех других номеров itm_class объем равен (pal_len * pal_wid * pal_hgt). Есть какой-либо способ сделать это?

+1

Поиск по сазе. –

ответ

0

Это зависит от того, выполняете ли вы этот оператор в визуально-базовом или если вы делаете это на уровне базы данных (функция/хранимая процедура) или если вы делаете это с запросом. Самый простой способ будет с case when заявлением в запросе, такие как:

select case when itm_class in (1,2,3,4) then (itm_len * itm_wid * itm_hgt) 
    when itm_class in (5,6,7,8) then (itm_len * itm_wid) 
    else (itm_len * itm_wid) end volume_calculation 
from some_table 
2

Вы можете использовать iif условие для этого.

IIF(itm_class in (1,5,22,45,67,89,97,98,99,100), itm_len * itm_wid * itm_hgt, pal_len * pal_wid * pal_hgt) 

Он работает как, если условие (первый аргумент) истинно, выберите первое значение (второй аргумент), либо выбрать другую (3-й аргумент)

+0

Большое вам спасибо, это прекрасно. Я просто немного испортил контекст. Еще раз спасибо – Alex

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