【发布时间】:2017-06-15 14:41:11
【问题描述】:
我在使用 SQL Server 中的交叉表查询时遇到问题,希望有人能提供帮助?
我有下表:
- Student ID - Name - Course - Course Level -
- 1 - John - English - E2 -
- 1 - John - Mathns - E3 -
- 1 - John - Computing - L2 -
每个学习者都必须参加英语、数学和计算机评估并给出一个级别。
我需要在一行中报告一位学习者在每次评估中取得的成绩,如下所示:
- StudentID - Name - English - Maths - Computing -
- 1 - John - E2 - E3 - L2 -
我从下面的 cmets 获得了这个代码:谢谢@iamdave。
SELECT PERSON_CODE, [Computing], [Maths], [English]
FROM TT
PIVOT (MAX(LEVEL) FOR COURSE_CODE IN ([DL], [NUM15], [ENG15])) AS P
我只需要添加一个 group by 以便 John 只显示为一行,正如我目前看到的那样:
- StudentID - Name - English - Maths - Computing -
- 1 - John - E2 - E3 - L2 -
- 1 - John - E2 - E3 - L2 -
- 1 - John - E2 - E3 - L2 -
代替:
- StudentID - Name - English - Maths - Computing -
- 1 - John - E2 - E3 - L2 -
- 2 - Amy - L1 - L2 - E3 -
谢谢
【问题讨论】:
-
您的表列与查询不一致。先改正
-
对不起,我应该解释一下 StudentID 和 Person_Code 是相同的字段。谢谢,
标签: sql sql-server sql-server-2008 pivot pivot-table