sql行转列

DECLARE @t_Stu TABLE(
    [学生姓名] NVARCHAR(10),
    [课程名称] NVARCHAR(10),
    [考试成绩] INT
);

INSERT INTO @t_Stu( 学生姓名, 课程名称, 考试成绩 )VALUES  ( N'张三',N'英语',88)
INSERT INTO @t_Stu( 学生姓名, 课程名称, 考试成绩 )VALUES  ( N'张三',N'数学',87)
INSERT INTO @t_Stu( 学生姓名, 课程名称, 考试成绩 )VALUES  ( N'李四',N'英语',92)
INSERT INTO @t_Stu( 学生姓名, 课程名称, 考试成绩 )VALUES  ( N'李四',N'数学',90)
INSERT INTO @t_Stu( 学生姓名, 课程名称, 考试成绩 )VALUES  ( N'王五',N'英语',79)
INSERT INTO @t_Stu( 学生姓名, 课程名称, 考试成绩 )VALUES  ( N'王五',N'数学',90)

找出英语成绩大于数学成绩的学生并列出来

SELECT * FROM @t_Stu/*数据源*/
AS p
PIVOT
(
    SUM(p.考试成绩/*行转列后 列的值*/) FOR 课程名称/*需要行转列的列*/ IN ([英语],[数学]/*列的值*/)
) AS T WHERE [英语]>[数学]

原文地址:https://www.cnblogs.com/zhyue93/p/sql_pivot1.html