mysql行转列transform_MySQL学习之行列转换案例
前言
Oracle中的pivot/unpivot函数可以很方便的帮助我们实现行列转换,但是MySQL并不支持。
可以在SQL上想办法,比如pivot考虑用聚合函数+case when, unpiovt函数考虑用union all。
一、行转列
1-1、准备
create table wd_test(
id int(32) not null auto_increment,
name varchar(80) default null,
date date default null,
scount int(32),
primary key (id)
);
INSERT INTO `wyc_test` (`id`,`name`,`date`,`scount`) VALUES (1,'小说','2013-09-01',10000);
INSERT INTO `wyc_test` (`id`,`name`,`date`,`scount`) VALUES (2,'微信','2013-09-01',20000);
INSERT INTO `wyc_test` (`id`,`name`,`date`,`scount`) VALUES (3,'小说','2013-09-02',30000);
INSERT INTO `wyc_test` (`id`,`name`,`date`,`scount`) VALUES (4,'微信','2013-09-02',35000);
INSERT INTO `wyc_test` (`id`,`name`,`date`,`scount`) VALUES (5,'小说','2013-09-03',31000);
INSERT INTO `wyc_test` (`id`,`name`,`date`,`scount`) VALUES (6,'微信','2013-09-03',36000);
INSERT INTO `wyc_test` (`id`,`name`,`date`,`scount`) VALUES (7,'小说','2013-09-04',35000);
INSERT INTO `wyc_test` (`id`,`name`,`date`,`scount`) VALUES (8,'微信','2013-09-04',38000);
INSERT INTO `wyc_test` (`id`,`name`,`date`,`scount`) VALUES (9,'小说','2013-09-01',80000);
INSERT INTO `wyc_test` (`id`,`name`,`date`,`scount`) VALUES (10,'微信','2013-09-01',70000);
图片.png
1-2、SQL实现
#行转列
SELECT
a.date,
SUM(CASE a.name
WHEN '小说' THEN a.scount
ELSE 0
END) 'sum_小说',
MAX(CASE a.name
WHEN '小说' THEN a.scount
ELSE 0
END) 'max_小说',
SUM(CASE a.name
WHEN '微信' THEN a.scount
ELSE 0
END) '微信',
MAX(CASE a.name
WHEN '小说' THEN a.scount
ELSE 0
END) 'max_微信'
FROM
wd_test a
GROUP BY DATE;
图片.png
二、列转行
2-1、准备
CREATE TABLE wd_test2
(
id INT(32) NOT NULL AUTO_INCREMENT,
username VARCHAR(80) DEFAULT NULL,
cn FLOAT,
math FLOAT,
en FLOAT,
PRIMARY KEY (id)
)
INSERT INTO `wd_test2` (`id`,`username`,`cn`,`math`,`en`) VALUES (1,'zhangsan',87,65,75);
INSERT INTO `wd_test2` (`id`,`username`,`cn`,`math`,`en`) VALUES (2,'lisi',78,95,81);
INSERT INTO `wd_test2` (`id`,`username`,`cn`,`math`,`en`) VALUES (3,'wangwu',97,78,91);
INSERT INTO `wd_test2` (`id`,`username`,`cn`,`math`,`en`) VALUES (4,'zhaoliu',80,55,75);
图片.png
2-2、SQL
SELECT username, '语文' AS COURSE , cn AS SCORE FROM wd_test2
UNION SELECT username, '数学' AS COURSE, math AS SCORE FROM wd_test2
UNION SELECT username, '英语' AS COURSE, en AS SCORE FROM wd_test2
ORDER BY username,COURSE
图片.png
mysql行转列transform_MySQL学习之行列转换案例相关推荐
- mysql中将列动态转换为行,mysql 行转列 MySQL数据库动态行转列
想把mysql一个表的行转成列,图1是原表,想实现图2的样式SELECT MAX(CAS就是一个动态的行列转换 CREATE TABLE `c_wssb_zz` ( `aa011` varchar(1 ...
- mysql行转列和列转行_mysql 行转列和列转行实例详解
mysql行转列.列转行 语句不难,不做多余解释了,看语句时,从内往外一句一句剖析 行转列 有如图所示的表,现在希望查询的结果将行转成列 建表语句如下: create table `test_tb_g ...
- mysql行转列sql函数_sql动态行转列的两种方法
第一种方法: 代码如下: select *from ( select Url,case when Month=01 then '1月' when Month=02 then '2月' when ...
- C语言试题二十七之请编写程序,实现矩阵(3行3列)的转置(即行列互换)。
1. 题目 请编写一个函数function(int array[3][3]),实现矩阵(3行3列)的转置(即行列互换). 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试.研究生复试中 ...
- 5分钟搞懂MySQL - 行转列
小伙伴想精准查找自己想看的MySQL文章?喏 → MySQL专栏目录 | 点击这里 MySQL行转列,对经常处理数据的同学们来说,一定是不陌生的,甚至是印象深刻,因为它大概率困扰过你,让你为之一愣~ ...
- oracle行列转换关联union的方式_几行代码轻松玩转 Excel 行列转换
几行代码轻松玩转 Excel 行列转换 下面这种交叉式的 Excel 表是很常见的格式,用来填写和查看都比较方便: 但是,如果想做进一步的统计分析,这种格式就不方便了,需要行列转换,变成如下格式的明细 ...
- mysql 行转列_详解MySQL行列转换4个实现方案及反向行转列实验测试
概述 今天主要做一个实验,先理解下mysql行列转换,后面在做一下反向的行列转换. 需求 二维关系转换为三维关系. 1.环境准备 create database test;use test;creat ...
- mysql 行转列分级输出_MySQL如何实现行转列分级输出?_MySQL
概述 好久没写SQL语句,今天看到问答中的一个问题,拿来研究一下. 问题链接:关于Mysql 的分级输出问题 情景简介 学校里面记录成绩,每个人的选课不一样,而且以后会添加课程,所以不需要把所有课程当 ...
- mysql 行转列查询优化_行转列及列转行查询
开发过程中常遇到行转列或是列转行的问题,即需要将数据库中一张表信息进行行转列操作,再将每列(即每个字段)作为与其他表进行联表查询的字段进行显示. 一.行转列:将原来同一列下多行的不同内容作为多个字段, ...
最新文章
- 图解matlab基本操作
- python画图角度_Python画图
- java 找茬,找茬。解决方法
- 模拟集成电路的经典教材
- 获得变量的名称获得传入参数的参数类型与堆栈中的函数名获得变量的名称
- python方差的计算公式为什么减一_样本标准差分母为何是n-1
- 蚂蚁金服OceanBase挑战TPCC | TPC-C基准测试之存储优化
- /etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc和~/.bash_logout
- GhostNet 解读及代码实验(附代码、超参、日志和预训练模型)
- asp.net 独立缓存服务器的研究
- PTA程序设计类实验辅助教学平台-基础编程题--JAVA--7.4 BCD解密
- 吴恩达机器学习作业6---Support Vector Machines apply in Spam Classification(下)
- Win11如何增强麦克风?Win11增强麦克风的设置
- 数据压缩算法该如何选择?
- CocosCreator学习示例合集v3.4.2
- 还在熬夜干论文——Python带你一键起飞!【内附演示视频】
- python帮拿王者荣耀金币
- javajavascript:void(‘h2‘)WEB(jsp基本语法表单提交)
- 大数据开发工程师都需要学什么大数据课程?
- Microsoft .NET PetShop 4.0 架构与技术分析(七)
热门文章
- vue中页面上的input框自动获取焦点
- 一个支付宝竟使用了30多个开源软件
- 这个七夕节,Python技术six了!
- SpringBoot实现发送邮件、发送微信公众号推送
- java实现输入一个任意十进制数转换为二进制数
- HLSL 学习笔记1 vertex shader, pixel shader
- 工业品物料,要如何做好管理?
- Web前端初学者必学的6个知识点!
- python题库大一_大一python选择题题库_python选择题题库 - CSDN
- 在“人货场”这三个因素中,最影响电商直播效果的是哪一个?