我有一些学生在年底被授予A到E的成绩。我发现使用以下SQL按评估代码对已获得成绩的学生进行分组的百分比。SQL即使没有数据也会返回行
SELECT '2014' as FileYear,
AssessmentCode,
AssessResultsResult as Grade,
cast(count(*)*100.0/sum(count(*)) over (partition by assessmentcode) as decimal(5,2))as GradePerc
FROM vStudentReportsSemesterResults
WHERE (FileYear = 2014)
AND (FileSemester = 2)
AND (AssessmentCode like '11%')
AND (AssessAreaHdgAbbrev2 = 'FinalGrade')
group by AssessmentCode,
AssessResultsResult
order by assessmentcode
这工作完全和回报......
FileYear AssessmentCode Grade GradePerc
2014 11CPSIPT NULL 100
2014 11CPSSDD A 11.76
2014 11CPSSDD B 47.06
2014 11CPSSDD C 41.18
2014 11DRADRA NULL 100
2014 11GEOGEO A 6.25
2014 11GEOGEO B 56.25
2014 11GEOGEO C 28.13
2014 11GEOGEO D 9.38
2014 11HISANC NULL 100
注意一些评估代码还没有(在列级NULL)提交成绩尚未和其他人提交的成绩,但没有学生例如,他们被授予D或E。
是否有返回,即使成绩没有被授予数据的方式提交或尚未如
FileYear AssessmentCode Grade GradePerc
2014 11CPSIPT A 0
2014 11CPSIPT B 0
2014 11CPSIPT C 0
2014 11CPSIPT D 0
2014 11CPSIPT E 0
2014 11CPSSDD A 11.76
2014 11CPSSDD B 47.06
2014 11CPSSDD C 41.18
2014 11CPSSDD D 0
2014 11CPSSDD E 0
2014 11DRADRA A 0
2014 11DRADRA B 0
2014 11DRADRA C 0
2014 11DRADRA D 0
2014 11DRADRA E 0
2014 11GEOGEO A 6.25
2014 11GEOGEO B 56.25
2014 11GEOGEO C 28.13
2014 11GEOGEO D 9.38
2014 11GEOGEO E 0
我想图此信息,并想知道,如果一个等级还没有被授予等
感谢您的帮助。实现上述结果
有多种可能的方法,而我是一个不写出正确答案的坏人。结束语:尝试在查询中添加['WITH ROLLUP'](http://technet.microsoft.com/library/ms189305),并查看是否无法将结果筛选到您想要的结果。 – 2014-10-16 13:09:06