当前位置:Gxlcms > 数据库问题 > SQL竖表转换成横表统计

SQL竖表转换成横表统计

时间:2021-07-01 10:21:17 帮助过:35人阅读

  1. <code>#创建表user_score
  2. create table user_score
  3. (
  4. name varchar(20),
  5. subjects varchar(20),
  6. score int
  7. );
  8. insert into user_score(name,subjects,score) values('张三','语文',60);
  9. insert into user_score(name,subjects,score) values('张三','数学',70);
  10. insert into user_score(name,subjects,score) values('张三','英语',80);
  11. insert into user_score(name,subjects,score) values('李四','语文',90);
  12. insert into user_score(name,subjects,score) values('李四','数学',100);</code>
  1. <code>#创建表user_score2
  2. create table user_score2
  3. (
  4. name varchar(20),
  5. yuwen int,
  6. shuxue int,
  7. yingyu int
  8. );
  9. insert into user_score2(name,yuwen,shuxue,yingyu) values('张三',60,70,80);
  10. insert into user_score2(name,yuwen,shuxue,yingyu) values('李四',90,100,0);</code>
  1. <code>#纵表转横表
  2. select name,
  3. sum(case subjects when '语文' then score else 0 end) as '语文',
  4. sum(case subjects when '数学' then score else 0 end) as '数学',
  5. sum(case subjects when '英语' then score else 0 end) as '英语'
  6. from user_score group by name;</code>
  1. <code>#纵表转横表
  2. SELECT name, 'yuwen' AS subjects, yuwen AS score FROM user_score2 UNION ALL
  3. SELECT name, 'shuxue' AS subjects, shuxue AS score FROM user_score2 UNION ALL
  4. SELECT name, 'yingyu' AS subjects, yingyu AS score FROM user_score2
  5. ORDER BY name,subjects DESC; </code>

SQL竖表转换成横表统计

标签:创建表   The   转换   esc   case   order   sel   else   val   

人气教程排行