SQL连接和条件比较值不正确

SQL连接和条件比较值不正确,sql,sql-server,join,union,Sql,Sql Server,Join,Union,我在做这些陈述,通过得到正确的最小值和最大值范围,我离开了 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.LetterGradeI

我在做这些陈述,通过得到正确的最小值和最大值范围,我离开了

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];

这就是正确的范围应该是什么样子:


您的最后一次加入需要在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];

  LEFT JOIN CourseGrade m
    ON m.LetterGradedId=L.LetterGradeId  AND m.GradeValue > C.GradeValue
第一串 c、 等级值=0 这个条件是错误的

m.GradeValue > C.GradeValue
因此,您在min(m.GradeValue)中得到null,您的isnull返回100