如果在SQL问题中声明

时间:2015-07-28 13:21:14

标签: sql ms-access

我正在使用Access在名为dbo_item的数据库上运行查询。它包含一个名为itm_class的列,其中包含数字1-100。它还包含名为itm_len,itm_wid,itm_hgt,pal_len,pal_wid,pal_hgt的列。根据项目类别编号,我需要它来按项目尺寸或托盘尺寸计算体积。我尝试了一些不同的东西,但我不确定如何使If语句起作用。任何帮助将不胜感激。

即。如果itm_class等于1,5,22,45,67,89,97,98,99,100,那么volume是(itm_len * itm_wid * itm_hgt),而对于所有其他itm_class数字,volume是(pal_len * pal_wid * pal_hgt)。有没有办法做到这一点?

2 个答案:

答案 0 :(得分: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)

如果条件(第一个参数)为True,则选择第一个值(第二个参数)或者选择另一个(第三个参数)

答案 1 :(得分:0)

这取决于您是否在visual-basic中执行此语句,或者您是在数据库级别(函数/存储过程)执行此操作,还是使用查询执行此操作。最简单的方法是在查询中使用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