首页 > 数据库 >数据库表行列转换

数据库表行列转换

时间:2022-09-29 14:24:12浏览次数:49  
标签:insert 转换 name course 数据库 kecheng 行列 score into

行转列

创建表kecheng,并插入数据

 insert into kecheng (id, name, course, score)
 values (1, '张三', '语文', 67);
 insert into kecheng (id, name, course, score)
 values (1, '张三', '数学', 76);
 insert into kecheng (id, name, course, score)
 values (1, '张三', '英语', 43);
 insert into kecheng (id, name, course, score)
 values (1, '张三', '历史', 56);
 insert into kecheng (id, name, course, score)
 values (1, '张三', '化学', 11);
 insert into kecheng (id, name, course, score)
 values (2, '李四', '语文', 54);
 insert into kecheng (id, name, course, score)
 values (2, '李四', '数学', 81);
 insert into kecheng (id, name, course, score)
 values (2, '李四', '英语', 64);
 insert into kecheng (id, name, course, score)
 values (2, '李四', '历史', 93);
 insert into kecheng (id, name, course, score)
 values (2, '李四', '化学', 27);
 insert into kecheng (id, name, course, score)
 values (3, '王五', '语文', 24);
 insert into kecheng (id, name, course, score)
 values (3, '王五', '数学', 25);
 insert into kecheng (id, name, course, score)
 values (3, '王五', '英语', 8);
 insert into kecheng (id, name, course, score)
 values (3, '王五', '历史', 45);
 insert into kecheng (id, name, course, score)
 values (3, '王五', '化学', 1);

查询该表,结构显示:
image

通过sql查询显示下图:
image

SQL_A:
select  name,
sum(case when course='语文' then score end) as 语文,
sum(case when course='数学' then score end) as 数学,
sum(case when course='英语' then score end) as 英语,
sum(case when course='历史' then score end) as 历史,
sum(case when course='化学' then score end) as 化学
from kecheng group by name;
SQL_B:
select distinct k.`name` AS name,
(select score from kecheng where name = k.`name` and course = '语文' )as 语文,
(select score from kecheng where name = k.`name` and course = '数学' )as 数学,
(select score from kecheng where name = k.`name` and course = '英语' )as 英语,
(select score from kecheng where name = k.`name` and course = '历史' )as 历史,
(select score from kecheng where name = k.`name` and course = '化学' )as 化学
from kecheng k;
SQL_C:
SELECT name AS name,
SUM(IF(`course`='语文',score,0)) AS 语文,
SUM(IF(`course`='数学',score,0)) AS 数学,
SUM(IF(`course`='英语',score,0)) AS 英语,
SUM(IF(`course`='历史',score,0)) AS 历史,
SUM(IF(`course`='化学',score,0)) AS 化学
FROM kecheng
GROUP BY name;

SQL_A和SQL_B和SQL_C都能达到效果。

列转行

创建表score

添加数据:

insert into score(USER_NAME, CN_SCORE, MATH_SCORE, EN_SCORE) values
("张三", 34, 58, 58),
("李四", 45, 87, 45),
("王五", 76, 34, 89);

image

SQL:

select user_name, '数学' COURSE, MATH_SCORE as SCORE from score
union all
select user_name, '英语' COURSE, EN_SCORE as SCORE from score
union all
select user_name, '语文' COURSE, CN_SCORE as SCORE from score
order by user_name,COURSE;

效果:
image

标签:insert,转换,name,course,数据库,kecheng,行列,score,into
From: https://www.cnblogs.com/leepandar/p/16741388.html

相关文章

  • SQL Server 2012 镜像数据库搭建
    SQLServer镜像“数据库镜像”是一种提高SQLServer数据库的可用性的解决方案。镜像基于每个数据库实现,并且只适用于使用​​完整恢复模式​​的数据库。类似于Oracle的D......
  • 小工具-将awr报告转换为markdown格式
    将awr报告转换为markdown格式,后期可容易解析并分析awr报告。效果......
  • MongoDB 4.4 数据库参数详细说明(二) - 一般参数
    1.connPoolMaxShardedConnsPerHost**作用:**设置用于与分片通信的legacy连接池的最大大小。池的大小不会阻止创建其他连接,但是会阻止连接池保留超出此限制的连接。**默认:**2......
  • 数据库死锁
    --当前运行的所有事务SELECT*FROMinformation_schema.INNODB_TRX;--当前出现的锁SELECT*FROMinformation_schema.INNODB_LOCKs;--锁等待的对应关系SELECT......
  • 导入数据到neo4j数据库
    首先去MySQL端通过SQL把数据导出.csv格式的文件。记得去掉.csv数据文件里数据上的引号。sed-i's/"//g'1.csv 然后把.csv数据文件放到import目录里:/dat......
  • MySQL数据库-数据表(下)
    SELECT定义:SQL的SELECT语句可以实现对表的选择、投影及连接操作。即SELECT语句可以从一个或多个表中根据用户的需要从数据库中选出匹配的行和列,结果通常是生成一个......
  • 将有序数组转换为二叉搜索树
    给你一个整数数组nums,其中元素已经按升序排列,请你将其转换为一棵高度平衡二叉搜索树。高度平衡二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过......
  • [答疑]EA中画状态转换图如何画的,就是画的那种曲线
    robotsky(872***689)15:48:40EA中画状态转换图如何画的,就是画的那种曲线。潘加宇(3504847)10:58:38群共享文件有之前上传的EA12状态机操作教程:StatemachineEA12.pdf潘加......
  • 数据库复制订阅问题解决脚本
    --查列表select*frommsdb.dbo.MSdistpublishersDELETEFROMmsdb.dbo.MSdistpublishersselect*frommsdb.dbo.MSdistpublishers--增加execsp_droplinkedsrvl......
  • EntityFrameworkCore+CodeFirst:根据实体自动生成数据库(一) 代码生成
     生成数据库表有下面的三种方式:代码生成。程序包管理器控制台迁移。命令行迁移。下面分别介绍上面的三种方法。以下示例均采用netcore3.1+mysql数据库一、代码生......