Kel*_* K. 34 ms-access select-case
我有一个查询,其中包括名为openingbalance和佣金的字段.我想基于opensbalance来计算佣金的值,类似于Access VBA中的这个块: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
Run Code Online (Sandbox Code Playgroud)
但由于Access不允许Select Case
查询,我如何在Access SQL中实现我的目标?
Han*_*sUp 57
将Switch Function视为多个IIf()
表达式的替代.它将从表达式计算结果为True的第一个表达式/值对返回值,并忽略任何剩余的对.该概念类似于SELECT ... CASE
您引用的方法,但在Access SQL中不可用.
如果要将计算字段显示为commission
:
SELECT
Switch(
OpeningBalance < 5001, 20,
OpeningBalance < 10001, 30,
OpeningBalance < 20001, 40,
OpeningBalance >= 20001, 50
) AS commission
FROM YourTable;
Run Code Online (Sandbox Code Playgroud)
如果要将该计算值存储到名为的字段commission
:
UPDATE YourTable
SET commission =
Switch(
OpeningBalance < 5001, 20,
OpeningBalance < 10001, 30,
OpeningBalance < 20001, 40,
OpeningBalance >= 20001, 50
);
Run Code Online (Sandbox Code Playgroud)
无论哪种方式,看看您是否Switch()
更容易理解和管理.IIf()s
随着条件数量的增加,多个人会变得令人难以置信.
您可以使用IIF获得类似的结果.
请注意,您可以嵌套IIF语句来处理多个案例.这里有一个例子:http://forums.devshed.com/database-management-46/query-ms-access-iif-statement-multiple-conditions-358130.html
SELECT IIf([Combinaison] = "Mike", 12, IIf([Combinaison] = "Steve", 13)) As Answer
FROM MyTable;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
127531 次 |
最近记录: |