有时我们查询数据库数据为了更直观的展示数据,我们需要将纵列数据展示成横列数据,以下用一个小例子来展示如何转换

1.创建一个普通的纵表

create table TableName
(
    姓名 varchar(20),
    课程 varchar(20),
    成绩 int
)
insert into TableName(姓名,课程,成绩) values('张三','语文',60)
insert into TableName(姓名,课程,成绩) values('张三','数学',70)
insert into TableName(姓名,课程,成绩) values('张三','英语',80)
insert into TableName(姓名,课程,成绩) values('李四','语文',90)
insert into TableName(姓名,课程,成绩) values('李四','数学',100)

2、纵表转横表

聚合函数[max或sum]配合case语句

select t.姓名,
  max(case t.课程 when '语文' then t.成绩 else 0 end ) 语文,
  max(case t.课程 when '数学' then t.成绩 else 0 end ) 数学,
  max(case t.课程 when '英语' then t.成绩 else 0 end ) 英语
from TableName t group by t.姓名;

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐