检查多个值是否在1个查询中的相应(多个)范围内

时间:2013-04-04 19:34:45

标签: sql ms-access

几年前就回答这个问题:MS Access 2003: Check if data is within range from another table

如果我想在一个查询中检查多个数据是否在多个范围内,我该怎么办?我试图找到一个人每次测试的分数。我对每个测试都有不同的范围,因为一个测试可能超过100个,而另一个测试只有10个。

我是否必须使用上面链接的问题中的答案创建许多查询并结合或者是否有更简单的方法?

表A:

Name        Test1_Score    Test2_Score     Test3_Score        
Person A     205           98              5 
Person B     105           88              8
Person C     400           89              10

表B:

Points       Test1_GradeReq    Test2_GradeReq     Test3_GradeReq
1              0               0               0
2              300             30              1
3              300             70              2
4              400             100             3

1 个答案:

答案 0 :(得分:0)

以下获取每个测试和每个人的分数:

select a.name, a.Test1_Score, a.Test2_Score, a.Test3_Score,
       sum(iif(test1_score <= test1_gradeReq, 1, 0)) - 1 as Test1_Points,
       sum(iif(test2_score <= test2_gradeReq, 1, 0)) - 1 as Test2_Points,
       sum(iif(test3_score <= test3_gradeReq, 1, 0)) - 1 as Test3_Points
from TableA a, -- cross join
     TableB b
group by a.name, a.Test1_Score, a.Test2_Score, a.Test3_Score   

假设每个步骤的点数增加1。