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