我有一些學生在年底被授予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