我有一组表格,包括代表,团队,错误,错误日志。错误日志列出了代表所犯的所有错误。每个代表都在一个团队中。每个rep都有一个Edge ID (用户编号),每个不同类型的错误都有一个积分值(存储在errors表中)。
我在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
我如何对此进行编码(可能会选择大小写)?我已经试了一个小时了,但还是做不好!
谢谢你的帮助。
发布于 2009-05-14 16:02:53
Access不支持select案例结构。相反,您需要使用Switch函数
Switch(SumOfPoints >= 10, 5, SumOfPoints >=5, 4, ...)
发布于 2009-05-14 16:01:14
我认为您可以使用MS Access SQL中的内联IIF( )
语句来获得相同的结果……
你可以试一试
SELECT
Reps.Forename
...
, Sum(Errors.Points) AS SumOfPoints
, IIf(Sum(Errors.Points) > 5, "Super Star", "Dummy")
... and so on ...
发布于 2009-05-14 19:15:29
您可能希望为成绩创建一个表,以便只维护该表,而不维护代码。将你的分数加入其中。
分数| 0,3 1,3 ... 10,5
如果不在表中,则= 5。
此外,还可以有StartScore、EndScore和Grade。开始和结束之间的任何分数都会得到分数。
https://stackoverflow.com/questions/864159
复制相似问题