我有一组表,包括Reps,Teams,Errors,Error Log。 错误日志列出了代表所做的所有错误。每个代表都在一个团队中。每个代表都有一个边缘ID(用户编号) 每种不同类型的错误都有一个点值(存储在错误表中)。
我在Access中查询了两个日期之间团队中每个代表的总分值:
SELECT
Reps.Forename
, Reps.Surname
, [Error Log].[Edge ID]
, Teams.[Team Code]
, Sum(Errors.Points) AS SumOfPoints
FROM Teams
INNER JOIN (
Reps INNER JOIN (
Errors INNER JOIN [Error Log]
ON Errors.[E&CD code] = [Error Log].[E&CD Code])
ON Reps.[Edge ID] = [Error Log].[Edge ID])
ON Teams.[Team Code] = Reps.[Team Code]
WHERE
((([Error Log].[Date Logged]) Between [Error logged from: (dd/mm/yyyy)] And [Error logged to: (dd/mm/yyyy)])
AND
((Teams.[Team Code])=[Team Code:]))
GROUP BY
Reps.Forename
, Reps.Surname
, [Error Log].[Edge ID]
, Teams.[Team Code]
ORDER BY
Sum(Errors.Points) DESC;
我想给每个代表一个等级取决于他们的分数,其中: 0-4分= 3级,5-9 = 4和10 + = 5
我如何编码(也许是SELECT CASE)?我一直在尝试最后一小时,但无法正确使用它!
感谢您的帮助。
答案 0 :(得分:4)
Access不支持选择案例结构。相反,您需要使用Switch函数
Switch(SumOfPoints >= 10, 5, SumOfPoints >=5, 4, ...)
答案 1 :(得分:2)
我认为你可以在MS Access SQL中在线使用IIF( )
语句来获得同样的东西......
你可以尝试
SELECT
Reps.Forename
...
, Sum(Errors.Points) AS SumOfPoints
, IIf(Sum(Errors.Points) > 5, "Super Star", "Dummy")
... and so on ...
答案 2 :(得分:1)
您可能想要为成绩创建一个表,这样您只需要维护表而不是代码。加入你的分数。
得分|年级 0,3 1,3 ... 10,5
如果不在表中那么= 5.
此外,可以有StartScore,EndScore和Grade。开始和结束之间的任何分数都将得到评分。