PIVOT syntax:
FOR pivot_column
IN ( <column_list> )
)
CREATE TABLE Score (
StuNo varchar(10),
StuName varchar(50),
CourseName varchar(50),
Score int
);
GO
INSERT INTO Score (StuNo, StuName, CourseName, Score) VALUES ('1', 'Tom', 'Math', 80);
INSERT INTO Score (StuNo, StuName, CourseName, Score) VALUES ('1', 'Tom', 'English', 82);
INSERT INTO Score (StuNo, StuName, CourseName, Score) VALUES ('1', 'Tom', 'Geography', 84);
INSERT INTO Score (StuNo, StuName, CourseName, Score) VALUES ('2', 'Jone', 'Math', 79);
INSERT INTO Score (StuNo, StuName, CourseName, Score) VALUES ('2', 'Jone', 'English', 88);
INSERT INTO Score (StuNo, StuName, CourseName, Score) VALUES ('2', 'Jone', 'Geography', 86);
GO
原始数据如下:
SELECT * FROM Score;

--Change row to column:
SELECT StuNo, StuName, Math, English, Geography
FROM Score
PIVOT (
MAX(Score) FOR CourseName IN (Math, English, Geography)
) AS ScoreList
ORDER BY StuNo;
运行结果如下:

CREATE TABLE ScoreList (
StuNo varchar(10),
StuName varchar(50),
Math int,
English int,
Geography int
);
GO
INSERT INTO ScoreList (StuNo, StuName, Math, English, Geography) VALUES ('1', 'Tom', 80, 82, 84);
INSERT INTO ScoreList (StuNo, StuName, Math, English, Geography) VALUES ('2', 'Jone', 79, 88, 86);
GO
SELECT * FROM ScoreList;

--Change column values to row:
SELECT StuNo, StuName, CourseName, Score
FROM ScoreList
UNPIVOT (
Score FOR CourseName IN (Math, English, Geography)
) AS ScorePvtTable
ORDER BY StuNo;

237



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



