将表的行列倒置体现(透视变动)
1)、创建数据表并添加数据
- create table Score
- (
- 学号 nvarchar(10)
- ,课程 nvarchar(10)
- ,效果 nvarchar(10)
- );
- insert into Score(学号,课程,效果)values('0001','语文',87),('0001','数学',79),('0001','英语',95)
- ,('0002','语文',69),('0002','数学',84);
复制代码
2)、先查询观察整张表的布局
3)、先体现要展示的根本的布局
- select 学号,'语文','数学','英语' from Score;
复制代码
4)、利用case语句,假如课程=语文 则直接体现语文效果,否则体现0,其他科目同
- select 学号
- ,case when 课程='语文' then 效果 else 0 end as'语文'
- ,case when 课程='数学' then 效果 else 0 end as'数学'
- ,case when 课程='英语' then 效果 else 0 end as'英语'
- from Score;
复制代码
5)、从5行变2行,利用分组聚合(按学号分组,各科分组聚合)
- select 学号
- ,sum(case when 课程='语文' then 效果 else 0 end) as'语文'
- ,sum(case when 课程='数学' then 效果 else 0 end) as'数学'
- ,sum(case when 课程='英语' then 效果 else 0 end) as'英语'
- from Score group by 学号;
复制代码
|