Microsoft访问iif语句

时间:2013-09-06 18:35:24

标签: ms-access ms-access-2013

我一直在以ms访问制作奖励系统,但试图将if语句用于2个不同的参数,即在一个班级中,前三名学生获得的数量与另一个班级的前三名学生可能得到的金额不同。所有类的所有数据都在一个表中。

请参阅:

Student ID  Class ID    Average Rank    Awards
1111    Form4            77.79166667        2   
1189    Form4                    105        1   
1222    Form4            73.41666667        3   
1234    Form4            69.95833333        4   
1235    Form 3           77.16666667        3   
1236    Form 3                72.875        4   
1258    Form 3           82.54166667        1   
1333    Form 3                 77.25        2   
1367    Form 2           56.54545455        4   
1445    Form 2           75.66666667        2   
1447    Form 2           75.72727273        1   
1465    Form 2           74.18181818        3   
1523    Form 1           76.18181818        3   
1542    Form 1           75.51515152        4   
1552    Form 1           79.03030303        2   
1555    Form 1           79.63636364        1

在创建查询的奖励列中,我使用的构建公式即IIf([Rank]=1,1100)为所有学生ID排名1,奖励为1100,但我只希望表单1学生ID获得1100而其他人排名第一,不同奖励值请协助。

2 个答案:

答案 0 :(得分:0)

我想你想要这样的东西:

IIF([ClassID] <> "Form 1", IIf([Rank]=1,500), IIf([Rank]=1,1100))

显然,你必须编辑奖励金额,因为你没有指明你给的是什么,但逻辑应该成立。

答案 1 :(得分:0)

如果这有点复杂,你可以在VBA中编写一个函数(在'modules'部分的任何代码模块中),并在查询中使用它:

ExpressionName: evaluateAward(ClassID, Rank)

在函数中,您可以使用嵌套的select case语句。这对可读性来说可能要好得多。