ibcadmin 发表于 2019-12-26 09:05:59

表的透视变换

<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]
查看完整版本: 表的透视变换