几年前就回答这个问题: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
答案 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。