2009-05-14 4 views
2

나는 대표, 팀, 오류, 오류 로그를 포함하는 테이블 집합이 있습니다. 오류 로그는 담당자가 수행 한 모든 오류를 나열합니다. 각 담당자는 한 팀에 있습니다. 각 담당자마다 Edge ID (사용자 번호)가 있습니다. 각기 다른 유형의 오류에는 점수 값 (오류 테이블에 저장 됨)이 있습니다.ACCESS SQL> SELECT 사례 도움말

내가 두 날짜 사이에 팀에 각 담당자의 포인트 값을 총하기 위해 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

어떻게하면 좋을까요? 나는 지난 1 시간 동안 노력하고 있었지만 올바르게 할 수 없었다!

도움 주셔서 감사합니다.

답변

2

나는

당신은

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

액세스를 선택 케이스 구조를 지원하지 않습니다 시도 할 수 ... 당신은 같은 일을 얻기 위해 MS 액세스 SQL에서 IIF() 문 인라인을 사용할 수 있다고 생각합니다. 대신 당신은 당신은 단지 테이블이 아닌 코드를 유지할 수 있도록 등급을위한 테이블을 생성 할 수 있습니다 Switch 기능을

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

+1 내 IIF 솔루션보다 훨씬 더 예뻐요. 그가 원하는 것을위한 중첩 된 조건은 다시 읽는 것이 끔찍할 것입니다. –

+0

+1 매일 새로운 것을 배웁니다! – Andomar

+0

왜, 오, 왜 전화하지 않았어, MS! 얼마나 많은 시간이 도움이 함수에 대한 검색을 보내고 ... – mavnn

1

를 사용해야합니다. 점수를 얻으세요.

점수 | 등급 0, 3 1,3- ... 10 표 5

그렇지 않은 경우는도 5 =

는 StartScore, EndScore 및 등급을 가질 수있다. 시작과 끝 사이의 점수는 성적을 얻습니다.