SQL sever 实现表行列互换

SQL行列互换有多种方法,这里需要使用pivot和unpivot函数,首先创建一个成绩表score

create table score  --创建表score
(学号 nchar(10) not null,
课程名称 nchar(10) not null,
成绩 int not null)

insert into score  --添加数据
values('01','语文',90),
('01','数学',80),
('02','语文',76),
('02','数学',98)

SQL sever 实现表行列互换_第1张图片
纵表变横表

select * from score
pivot(sum(成绩) for 课程名称 in ([语文],[数学])) t1

SQL sever 实现表行列互换_第2张图片
横表变纵表

select * from
(select * from score
pivot(sum(成绩) for 课程名称 in ([语文],[数学])) t1)t2
unpivot(成绩 for 课程 in ([语文],[数学])) t3

SQL sever 实现表行列互换_第3张图片

select 学号,sum(case 课程名称 when '语文' then 成绩 else 0 end) 语文,
sum(case 课程名称 when '数学' then 成绩 else 0 end) 数学 
from score group by 学号

SQL sever 实现表行列互换_第4张图片

你可能感兴趣的:(sql)