SQL竖表转换成横表统计

#创建表user_score
create table user_score
(
    name varchar(20),
    subjects varchar(20),
    score int
);
insert into user_score(name,subjects,score) values('张三','语文',60);
insert into user_score(name,subjects,score) values('张三','数学',70);
insert into user_score(name,subjects,score) values('张三','英语',80);
insert into user_score(name,subjects,score) values('李四','语文',90);
insert into user_score(name,subjects,score) values('李四','数学',100);
#创建表user_score2
create table user_score2
(
    name varchar(20),
    yuwen int,
    shuxue int,
    yingyu int
);
insert into user_score2(name,yuwen,shuxue,yingyu) values('张三',60,70,80);
insert into user_score2(name,yuwen,shuxue,yingyu) values('李四',90,100,0);
#纵表转横表
select name,
sum(case subjects when '语文' then score else 0 end) as '语文',
sum(case subjects when '数学' then score else 0 end) as '数学',
sum(case subjects when '英语' then score else 0 end) as '英语'
from user_score group by name;
#纵表转横表
SELECT name, 'yuwen' AS subjects, yuwen AS score FROM user_score2 UNION ALL
SELECT name, 'shuxue' AS subjects, shuxue AS score FROM user_score2 UNION ALL
SELECT name, 'yingyu' AS subjects, yingyu AS score FROM user_score2
ORDER BY name,subjects DESC; 

原文地址:https://www.cnblogs.com/apollo1616/p/10430087.html

时间: 2024-08-05 20:18:01

SQL竖表转换成横表统计的相关文章

sql纵表转换成横表

数据库中 将一张纵表转换为一张横表 数据库纵表数据 sql语句如下 select cardid, max(case t.projectcode when 'IA-002' then t.result end) as ht, max(case t.projectcode when 'IA-003' then t.result end) as wt, max(case t.projectcode when 'IA-005' then t.result end) as bmi, max(case t.

Mysql 表转换成 Sqlite表

目前的转换仅仅支持对没有外键的Mysql数据表 准备: 下载安装 Sqlite Expert 软件 一 获取Mysql中的.sql文件,获取过程省略可以直接导出sql文件 二 在Sqlite Expert 中新建数据库 三 在数据库中选中sql Tab,导入之前准备sql文件 四 关键步骤 将创建表的最后关于编码的sql语句一句primary key的语句删除 并在主键的创建是修改创建方法 将自动增长删除,这样说有点抽象,如下实例 这是mysql建表方式 CREATE TABLE `admin`

SQL Server 2005中的分区表(三):将普通表转换成分区表(转)

在设计数据库时,经常没有考虑到表分区的问题,往往在数据表承重的负担越来越重时,才会考虑到分区方式,这时,就涉及到如何将普通表转换成分区表的问题了. 那么,如何将一个普通表转换成一个分区表 呢?说到底,只要将该表创建一个聚集索引,并在聚集索引上使用分区方案即可. 不过,这回说起来简单,做起来就复杂了一点.还是接着上面的例子,我们先使用以下SQL语句将原有的Sale表删除. --删除原来的数据表 drop table Sale 然后使用以下SQL语句创建一个新的普通表,并在这个表里插入一些数据. -

SQL Server 2005中的分区表(三):将普通表转换成分区表

在设计数据库时,经常没有考虑到表分区的问题,往往在数据表承重的负担越来越重时,才会考虑到分区方式,这时,就涉及到如何将普通表转换成分区表的问题了. 那么,如何将一个普通表转换成一个分区表 呢?说到底,只要将该表创建一个聚集索引,并在聚集索引上使用分区方案即可. 不过,这回说起来简单,做起来就复杂了一点.还是接着上面的例子,我们先使用以下SQL语句将原有的Sale表删除. [c-sharp] view plain copy --删除原来的数据表 drop table Sale 然后使用以下SQL语

SQL Server 2005中的分区表(六):将已分区表转换成普通表

在前面,我们介绍过怎么样直接创建一个分区表,也介绍过怎么将一个普通表转换成一个分区表.那么,这两种方式创建的表有什么区别呢?现在,我又最新地创建了两个表: 第一个表名为Sale,这个表使用的是<SQL Server 2005中的分区表(一):什么是分区表?为什么要用分区表?如何创建分区表?>中的方法创建的,在创建完之后,还为该表添加了一个主键. 第二个表名Sale1,这个表使用的是<SQL Server 2005中的分区表(三):将普通表转换成分区表>中的方法创建的,也就是先创建了

使用Sql语句快速将数据表转换成实体类

开发过程中经常需要根据数据表编写对应的实体类,下面是使用sql语句快速将数据表转换成对应实体类的代码,使用时只需要将第一行'TableName'引号里面的字母换成具体的表名称就行了: declare @TableName sysname = 'TableName' declare @Result varchar(max) = 'public class ' + @TableName + ' {' select @Result = @Result + ' public ' + ColumnType

mysql 5.1 升级编译安装5.6把原MyISAM表转换成InnoDB,并全局备份一次【原创】

mysql 5.1 升级编译安装5.6把原MyISAM表转换成InnoDB,并全局备份一次 1.[备份指定数据库]不要用逗号mydb hellodb [[email protected] ~]# mysqldump -uroot -p  --databases mydb hellodb  > /tmp/all.sql [修改ENGINE=MyISAM 为 ENGINE=InnoDB] [[email protected] home]# cp hellodb.sql hellodb.sql.bak

将Excel的数据表转成数据库表

如果你有很多数据要导进数据库的表,敲代码恐怕效率不高,而对于数据操作,Excel在这方面就有优势,但如何将之有机结合呢?将Excel的数据表转成数据库表,这就是本篇博客的目的. 首先去下载MySQL皮肤(对MySQL数据进行图形化界面操作的便捷工具),点击打开皮肤下载链接. 然后连接数据库,进行操作 继续下一步结束之后会发现世界很美好.

普通表转换成分区表

描述:将表trans_new转换成分区表,分区字段为data_date. 一.准备 SQL> select /*+ parallel(t,8)*/  count(*) from  trans_new t;   COUNT(*) ---------- 445600483 SQL> select /*+ parallel(t,8)*/  max(DATA_DATE),min(DATA_DATE) from  edw.dw_fact_trans_new2014 t; MAX(DATA_ MIN(DA