Ms access Access SQL中的Select Case等效于什么?
我有一个查询,其中包括名为openingbalance和commissions的字段。我想基于openingbalance计算佣金值,类似于Access VBA中的Ms access Access SQL中的Select Case等效于什么?,ms-access,select-case,Ms Access,Select Case,我有一个查询,其中包括名为openingbalance和commissions的字段。我想基于openingbalance计算佣金值,类似于Access VBA中的Select Case块: Select Case OpeningBalance Case 0 To 5000 commission = 20 Case 5001 To 10000 commission = 30 Case 10001 To 20000 commissi
Select Case
块:
Select Case OpeningBalance
Case 0 To 5000
commission = 20
Case 5001 To 10000
commission = 30
Case 10001 To 20000
commission = 40
Case Else
commission = 50
End Select
但是由于Access不允许在查询中使用
选择Case
,我如何才能在Access SQL中实现我的目标?您可以使用IIF获得类似的结果
注意,您可以嵌套IIF语句来处理多个情况。这里有一个例子:
您可以执行以下操作:
select
iif ( OpeningBalance>=0 And OpeningBalance<=500 , 20,
iif ( OpeningBalance>=5001 And OpeningBalance<=10000 , 30,
iif ( OpeningBalance>=10001 And OpeningBalance<=20000 , 40,
50 ) ) ) as commission
from table
选择
iif(OpeningBalance>=0,OpeningBalance=5001,OpeningBalance=10001,OpeningBalance考虑将作为多个iif()的替代方案
expressions。它将返回表达式计算为True的第一个表达式/值对中的值,并忽略任何剩余的表达式/值对。该概念类似于您引用的SELECT…CASE
方法,但在Access SQL中不可用
如果要将计算字段显示为佣金
:
选择
开关(
开口天平<5001,20,
开口天平<10001,30,
期初余额<20001,40,
期初余额>=20001,50
)作为佣金
从你的桌子上;
如果要将该计算值存储到名为“佣金”的字段中,请执行以下操作:
更新您的表
设定佣金=
开关(
开口天平<5001,20,
开口天平<10001,30,
期初余额<20001,40,
期初余额>=20001,50
);
不管是哪种方式,看看你是否觉得
Switch()
更容易理解和管理。随着条件数量的增加,多个IIf()
可能会让人难以置信。HansUp你是最棒的。Switch函数工作得很好。ThanksIsSwitch()
当从Access本身执行时,只能在Access SQL中使用的VBA函数之一(如Nz()
),或者当您使用JET-Red OLE-DB/ODBC或ACE驱动程序时,它也可以工作吗?因为它是,我认为无论查询是否在Access会话中运行,它都应该可以在任何查询中工作。感谢响应RedFilter,这非常适合我正在处理的另一个查询,我只需要组合2个if语句。因为我刚刚开始使用Access 4个月前,我认为HansUp建议的开关功能更容易阅读。
select
iif ( OpeningBalance>=0 And OpeningBalance<=500 , 20,
iif ( OpeningBalance>=5001 And OpeningBalance<=10000 , 30,
iif ( OpeningBalance>=10001 And OpeningBalance<=20000 , 40,
50 ) ) ) as commission
from table