licm

将表的行列倒置显示(透视变换)

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)、先查询观察整张表的结构

select * from Score;

 

 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 学号;

分类:

技术点:

相关文章:

  • 2022-01-27
  • 2022-12-23
  • 2021-06-07
  • 2021-11-10
  • 2021-12-16
  • 2021-05-18
猜你喜欢
  • 2021-05-13
  • 2021-05-23
  • 2021-07-01
  • 2021-04-20
相关资源
相似解决方案