问题是您不能在聚合函数中组合外部和内部引用
(SELECt TOP 100 PERCENT SUM(CASE WHEN bands.StackPosition = b.StackPosition THEN 1 ELSE 0 END) * 100/ CASEWHEN COUNT(StudentScores_Subject.pkStudentScoreID) = 0 THEN 1ELSE COUNT(StudentScores_Subject.pkStudentScoreID) END FROM PerformanceLevelReportBands b WHERe b.fkPerformanceLevelReportID = @intPerfLevelReportId ORDER BY SUM(CASE WHEN bands.StackPosition = b.StackPosition THEN 1 ELSE 0 END) * 100/ CASEWHEN COUNT(StudentScores_Subject.pkStudentScoreID) = 0 THEN 1ELSE COUNT(StudentScores_Subject.pkStudentScoreID)END) AS 'Percent'
因此将其更改为
(SELECt TOP 100 PERCENT SUM(CASE WHEN bb.StackPosition = b.StackPosition THEN 1 ELSE 0 END) * 100/ CASE WHEN COUNT(StudentScores_Subject.pkStudentScoreID) = 0 THEN 1 ELSE COUNT(StudentScores_Subject.pkStudentScoreID) END FROM PerformanceLevelReportBands b JOIN PerformanceLevelReportBands bb ON bb.fkPerformanceLevelReportID =bands.fkPerformanceLevelReportID AND b.fkPerformanceLevelReportID =bb.fkPerformanceLevelReportID WHERe b.fkPerformanceLevelReportID = @intPerfLevelReportId ORDER BY SUM(CASE WHEN bb.StackPosition = b.StackPosition THEN 1 ELSE 0 END) * 100/ CASE WHEN COUNT(StudentScores_Subject.pkStudentScoreID) = 0 THEN 1 ELSE COUNT(StudentScores_Subject.pkStudentScoreID) END) AS 'Percent'
这是更详尽的解释。



