sql server如何把查询的多行记录显示在一行上面:
例如下面的学生成绩表,想把多个学科的成绩显示在一列上面

sql server如何把查询的多行记录显示在一行上面:
例如下面的学生成绩表,想把多个学科的成绩显示在一列上面

--行列转置
select 学号='1',姓名='张三',课程='语文',成绩='99'
into #base1
union
select 学号='1',姓名='张三',课程='数学',成绩='105'
union
select 学号='2',姓名='李四',课程='语文',成绩='99'
union
select 学号='2',姓名='李四',课程='数学',成绩='105'
union
select 学号='2',姓名='李四',课程='外语',成绩='110'
union
select 学号='3',姓名='王五',课程='语文',成绩='89'
union
select 学号='3',姓名='王五',课程='数学',成绩='130'
union
select 学号='3',姓名='王五',课程='外语',成绩='89'
union
select 学号='3',姓名='王五',课程='物理',成绩='80'
union
select 学号='3',姓名='王五',课程='历史',成绩='85'
select * from #base1
select 学号,姓名,[语文],[数学],[外语],[物理],[历史] from #base1
pivot(max(成绩) for 课程 in ([语文],[数学],[外语],[物理],[历史]))pvt