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