SELECT student_key, SUM(CASE course_key WHEN 1 THEN mark else 0 end) AS 'English', SUM(CASE course_key WHEN 2 THEN mark else 0 end) AS 'Maths', SUM(CASE course_key WHEN 3 THEN mark else 0 end) AS 'Physics' FROM Score GROUP BY student_key DECLARE @sql VARCHAR(1024) SET @sql = '' SELECT @sql = @sql + 'SUM(CASE course_key WHEN ' + CAST(course_key AS VARCHAR) + ' THEN mark else 0 end)' + ',' FROM (SELECT DISTINCT course_key FROM Score) AS obj SELECT @sql = LEFT(@sql, LEN(@sql) - 1) SET @sql = 'SELECT student_key,' + @sql + ' FROM Score GROUP BY student_key' --SELECT @sql EXECUTE (@sql)
本文介绍了一种使用SQL查询来统计学生各科成绩的方法。通过CASE WHEN语句针对不同科目(如英语、数学和物理)进行成绩求和,实现了对学生每门课程成绩的汇总。此外,还展示了如何动态生成SQL查询语句以适应更多科目。
762

被折叠的 条评论
为什么被折叠?



