【发布时间】:2015-02-26 21:28:52
【问题描述】:
我的数据库中有一个名为 Grades 的表,用于将学生的成绩记录为他们参加的每一年和学期的分数。使用查找表将这些点转换为 GCSE 结果。虽然我可以使用数据透视表返回分数,但我不知道如何返回用分数代替 GCSE 成绩的表格。
我的成绩表如下所示:
PupilID, GradeSubject, YearAndTerm, Grade
10001, English, Y7T1, 81
10001, English, Y7T2, 85
10001, English, Y7T3, 92
我的 GradesToPoints 查找表如下所示:
PointGrade, GCSEGrade
80, E-
81, E
82, E+
83, D-
84, D
我有以下 SQL 语句,它返回一个包含我需要的列但带有分数的表,我希望每列(Y7T1、Y7T2 等)通过使用查找表 GradesToPoints 返回该点的 GCSE 成绩。
SELECT *
FROM (
SELECT PupilID, GradeSubject, YearAndTerm, Grade
FROM Grades
) AS DT
PIVOT(SUM(Grade) FOR YearAndTerm IN ([KeyStage2],[Y7T1],[Y7T2],[Y7T3],
[Y8T1],[Y8T2],[Y8T3],[Y9T1],[Y9T2],[Y9T3],[Y10T1],[Y10T2],[Y10T3],
[Y11T1],[Y11T2],[Y11T3],[Y12T1],[Y12T2],[Y12T3],[Y13T1],[Y13T2],
[Y13T3],[Y14T1],[Y14T2],[Y14T3])) AS PVT
提前感谢您为此提供的任何帮助
【问题讨论】:
标签: sql sql-server database join pivot