ACCESS SQL> SELECT CASE HELP - PullRequest
2 голосов
/ 14 мая 2009

У меня есть набор таблиц, включая повторы, команды, ошибки, журнал ошибок. Журнал ошибок перечисляет все ошибки, сделанные представителем. Каждый представитель в команде. Каждый представитель имеет Edge 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)? Я пытался в течение последнего часа, но не могу сделать это правильно!

Спасибо за любую помощь.

Ответы [ 3 ]

4 голосов
/ 14 мая 2009

Access не поддерживает выбранную структуру регистра. Вместо этого вам нужно использовать функцию Switch

Switch(SumOfPoints >= 10, 5, SumOfPoints >=5, 4, ...)
2 голосов
/ 14 мая 2009

Я думаю, вы можете использовать оператор IIF( ), встроенный в MS Access SQL, чтобы получить то же самое ...

Вы можете попробовать

SELECT 
    Reps.Forename
    ...
    , Sum(Errors.Points) AS SumOfPoints
    , IIf(Sum(Errors.Points) > 5, "Super Star", "Dummy")
    ... and so on ...
1 голос
/ 14 мая 2009

Возможно, вы захотите создать таблицу для оценок, чтобы вы поддерживали только таблицу, а не код. Присоединяй свои оценки к нему.

Оценка | класс 0, 3 1, 3 ... 10, 5

Если нет в таблице, то = 5.

Также могут иметь StartScore, EndScore и Grade. Любая оценка между началом и концом получит оценку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...