2009-05-14 2 views
2

У меня есть набор таблиц, включая Reps, Teams, Errors, Error Log. Журнал ошибок содержит все ошибки, сделанные репутацией. Каждый представитель команды в команде. Каждый rep имеет идентификатор края (номер пользователя) Каждый тип ошибки имеет значение точек (хранится в таблице ошибок).ACCESS SQL> SELECT CASE HELP

У меня есть этот запрос в 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)? Я пробовал последний час, но не могу понять!

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

ответ

2

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

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

SELECT 
    Reps.Forename 
    ... 
    , Sum(Errors.Points) AS SumOfPoints 
    , IIf(Sum(Errors.Points) > 5, "Super Star", "Dummy") 
    ... and so on ... 
4

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

Switch(SumOfPoints >= 10, 5, SumOfPoints >=5, 4, ...) 
+0

+1 это намного красивее, чем мое решение IIF. вложенные условности для того, что он хочет, было бы ужасно, чтобы перечитать –

+0

+1 вы узнаете что-то новое каждый день! – Andomar

+0

Почему, почему вы не назвали это Select, MS! Сколько часов я потратил на поиск этой функции в справке ... – mavnn

1

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

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

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

Кроме того, может иметь StartScore, EndScore и ранга. Любая оценка между «Старт» и «Конец» получит оценку.