2014-04-12 2 views
0

이 문장을 수행하고 올바른 분 및 최대 값 범위를 가져와 해제합니다. SQL 잘못된 조인 및 조건 비교 값

enter image description here

SELECT 
C.CourseId, 
C.GradeValue MinGradeValue, 
isnull(min(m.GradeValue)-1,100) MAxGradeValue, 
L.LetterGrade , 
L.[Description] 
    FROM CourseGrade C 

    LEFT JOIN LetterGrades L 
    ON C.LetterGradedId=L.LetterGradeId 

    LEFT JOIN CourseGrade m 
    ON m.LetterGradedId=L.LetterGradeId AND m.GradeValue > C.GradeValue 

    GROUP BY 
    C.CourseId, 
    C.GradeValue, L.LetterGrade , 
    L.[Description]; 
올바른 범위는 어떻게 보일지입니다 :

enter image description here

답변

1

귀하의 마지막 CourseID에 있어야 가입 :

SELECT 
    C.CourseId, 
    C.GradeValue MinGradeValue, 
    isnull(min(m.GradeValue)-1,100) MAxGradeValue, 
    L.LetterGrade , 
    L.[Description] 
FROM CourseGrade C 

    LEFT JOIN LetterGrades L 
     ON C.LetterGradedId=L.LetterGradeId 

    LEFT JOIN CourseGrade m 
     ON m.CourseId=c.CourseId 
     AND m.GradeValue > C.GradeValue 

GROUP BY 
    C.CourseId, 
    C.GradeValue, L.LetterGrade , 
    L.[Description]; 
0

모습에서

LEFT JOIN CourseGrade m 
    ON m.LetterGradedId=L.LetterGradeId AND m.GradeValue > C.GradeValue 

첫 번째 문자열 c.GradeValue = 0 이 조건이

m.GradeValue > C.GradeValue 

따라서 당신은 분 (m.GradeValue)에서 null을 얻을 거짓, 당신의 반환 ISNULL (100)