您的位置:首页 > 其它

行列转换

2016-08-16 17:33 225 查看
--建表
create table [Scores]
(
[ID] int identity(1,1) primary key,
[Student] varchar(20) ,
[Subject] varchar(30),
[Score] float
)


insert into Scores(Student,Subject,Score) values('张三','语文','90')


方法一:

select Student AS '姓名' ,
max(CASE Subject when '语文' then Score else 0 end) AS '语文' ,
max(CASE Subject when '数学' then Score else 0 end) AS '数学' ,
max(CASE Subject when '英语' then Score else 0 end) as '英语'
from [Scores]
group by Student
order by Student


方法二(据说Sql Server2005以下的不能用):

/*
pivot(
  聚合函数(要转成列值的列名)
  for 要转换的列
  in(目标列名)
  )
*/
select Student as '姓名',
avg(语文) as '语文',
avg(英语) as '英语',
avg(数学) as '数学'
from Scores
pivot(
avg(Score) for Subject
in (语文,英语,数学)
)as NewScores
group by Student
order by Student asc
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: