首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >访问SQL >选择案例帮助

访问SQL >选择案例帮助
EN

Stack Overflow用户
提问于 2009-05-14 15:51:49
回答 3查看 2.6K关注 0票数 2

我有一组表格,包括代表,团队,错误,错误日志。错误日志列出了代表所犯的所有错误。每个代表都在一个团队中。每个rep都有一个Edge ID (用户编号),每个不同类型的错误都有一个积分值(存储在errors表中)。

我在Access中使用以下查询来计算团队中每个代表在两个日期之间的积分值:

代码语言:javascript
运行
复制
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

我如何对此进行编码(可能会选择大小写)?我已经试了一个小时了,但还是做不好!

谢谢你的帮助。

EN

回答 3

Stack Overflow用户

发布于 2009-05-14 16:02:53

Access不支持select案例结构。相反,您需要使用Switch函数

代码语言:javascript
运行
复制
Switch(SumOfPoints >= 10, 5, SumOfPoints >=5, 4, ...)
票数 4
EN

Stack Overflow用户

发布于 2009-05-14 16:01:14

我认为您可以使用MS Access SQL中的内联IIF( )语句来获得相同的结果……

你可以试一试

代码语言:javascript
运行
复制
SELECT 
    Reps.Forename
    ...
    , Sum(Errors.Points) AS SumOfPoints
    , IIf(Sum(Errors.Points) > 5, "Super Star", "Dummy")
    ... and so on ...
票数 2
EN

Stack Overflow用户

发布于 2009-05-14 19:15:29

您可能希望为成绩创建一个表,以便只维护该表,而不维护代码。将你的分数加入其中。

分数| 0,3 1,3 ... 10,5

如果不在表中,则= 5。

此外,还可以有StartScore、EndScore和Grade。开始和结束之间的任何分数都会得到分数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/864159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档