Mysql-sql行转列
原始数据如下图所示:(商品的销售明细)
date=业务日期;Item=商品名称;saleqty=销售数量

-- 建立测试数据(表)
create table test (Date varchar(10), item char(10),saleqty int);
insert test values('2010-01-01','AAA',8);
insert test values('2010-01-02','AAA',4);
insert test values('2010-01-03','AAA',5);
insert test values('2010-01-01','BBB',1);
insert test values('2010-01-02','CCC',2);
insert test values('2010-01-03','DDD',6);
实现的方法和思路如下:两个方法
-- 实现结果的静态SQL语句写法
-- 整理报表需要的格式
方法一:case item when x then xx when y then yy end
select date,
case item when 'AAA' then saleqty end as AAA,
case item when 'BBB' then saleqty end as BBB,
case item when 'CCC' then saleqty end as CCC,
case item when 'DDD' then saleqty end as DDD
from test;
方法二:if(条件判断,成立结果,不成立结果)
select date,
if (item = 'AAA',saleqty,null) as AAA,
if (item = 'BBB',saleqty,null) as BBB,
if (item = 'CCC',saleqty,null) as CCC,
if (item = 'DDD',saleqty,null) as DDD
from test;

-- 按日期汇总行
select date,
sum(case item when 'AAA' then saleqty end)as AAA,
sum(case item when 'BBB' then saleqty end)as BBB,
sum(case item when 'CCC' then saleqty end)as CCC,
sum(case item when 'DDD' then saleqty end)as DDD
from test group by date;
select date,
sum(if (item = 'AAA',saleqty,null)) as AAA,
sum(if (item = 'BBB',saleqty,null)) as BBB,
sum(if (item = 'CCC',saleqty,null)) as CCC,
sum(if (item = 'DDD',saleqty,null)) as DDD
from test group by date;

-- 处理数据:将空值的栏位填入数字0;
select date,
ifnull(sum(case item when 'AAA' then saleqty end) ,0)as AAA,
ifnull(sum(case item when 'BBB' then saleqty end) ,0)as BBB,
ifnull(sum(case item when 'CCC' then saleqty end) ,0)as CCC,
ifnull(sum(case item when 'DDD' then saleqty end) ,0)as DDD
from test group by date;
select date,
ifnull(sum(if (item = 'AAA',saleqty,null)),0) as AAA,
ifnull(sum(if (item = 'BBB',saleqty,null)),0) as BBB,
ifnull(sum(if (item = 'CCC',saleqty,null)),0) as CCC,
ifnull(sum(if (item = 'DDD',saleqty,null)),0) as DDD
from test group by date;

静态SQL语句编写完成!
其实有一步骤有点多余:可以直接if(,,0),而不是if(,,null)
select date,
if (item = 'AAA',saleqty,0) as AAA,
if (item = 'BBB',saleqty,0) as BBB,
if (item = 'CCC',saleqty,0) as CCC,
if (item = 'DDD',saleqty,0) as DDD
from test;

select date,
sum(if (item = 'AAA',saleqty,0)) as AAA,
sum(if (item = 'BBB',saleqty,0)) as BBB,
sum(if (item = 'CCC',saleqty,0)) as CCC,
sum(if (item = 'DDD',saleqty,0)) as DDD
from test group by date;

静态SQL语句编写完成!
参考网址https://www.cnblogs.com/ShaYeBlog/p/3594517.html
================================================================================================================
三月的时候就遇到了行转列。
计算一个表中的字段被清洗和标准化被命中的比例和原因。
转成行输出。

Mysql-sql行转列的更多相关文章
- SQL行转列 (及EAV模型获取数据)
参考文章: http://www.williamsang.com/archives/1508.html 情景简介 学校里面记录成绩,每个人的选课不一样,而且以后会添加课程,所以不需要把所有课程当作列. ...
- SQL 行转列和列转行
SQL 行转列和列转行 行列互转,是一个经常遇到的需求.实现的方法,有case when方式和2005之后的内置pivot和unpivot方法来实现. 在读了技术内幕那一节后,虽说这些解决方案早就用过 ...
- Ms sql行转列。汇总
SQL行转列汇总 PIVOT 用于将列值旋转为列名(即行转列),在 SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT 的一般语法是:PIVOT(聚合函数(列) FOR 列 ...
- sql 行专列 列转行 普通行列转换
转载:http://www.cnblogs.com/newwind521/archive/2010/11/25/1887203.html sql 行专列 列转行 普通行列转换 /* 标题:普通行列转换 ...
- sql 行转列 PIVOT 列转行 UNPIVOT
原文:sql 行转列 PIVOT 列转行 UNPIVOT 一: 现有表一(t_table1),想转为表二(t_table2)的格式. 表一: 年 公司 收入 2013 公司1 12 2013 公司2 ...
- sql 行转列总结
原文:sql 行转列总结 PIVOT UNPIVOT的用法 PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PI ...
- 关于MySQL的行转列的简单应用(二)---group函数
MySQL的行转列.列转行.连接字符串 concat.concat_ws.group_concat函数用法使用方法:CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一 ...
- mysql之行转列与列转行
mysql之行转列与列转行是数据查询的常见操作,以更好的来展示数据,下面就详细说说怎么实现. 行转列 行转列的话,就是将一条一条的行数据记录转换为一条列数据展示,一般来说是根据某一列来做汇总数据的操作 ...
- SQL行转列,列转行
SQL 行转列,列转行 行列转换在做报表分析时还是经常会遇到的,今天就说一下如何实现行列转换吧. 行列转换就是如下图所示两种展示形式的互相转换 行转列 假如我们有下表: SELECT * FROM s ...
- mysql实现行转列功能
实现从图一转行成图二的功能: 图一: 图二: 建表语句: CREATE TABLE `t_user_score` ( `id` ) NOT NULL AUTO_INCREMENT COMMENT '主 ...
随机推荐
- mysql 触发器检测表数据添加,进而调用存储过程检测数据,进而调用存储过程添加数据
触发器: beginDECLARE user_mes INT(64);SELECT user_id into user_mes FROM order_orderlist where id = new. ...
- 【转帖】lmbench的简单使用
https://www.cnblogs.com/mutong1228/p/10485840.html 下载地址 http://www.bitmover.com/lmbench/ tar -zxvf l ...
- Lucene 全文检索
基于 lucene 8 1 Lucene简介 Lucene是apache下的一个开源的全文检索引擎工具包. 1.1 全文检索(Full-text Search) 全文检索就是先分词创建索引,再执行搜索 ...
- Eureka 服务中心
old 使用Eure ...
- Java多线程(九):生产者消费者模型
生产者消费者模型 生产者:生产任务的个体: 消费者:消费任务的个体: 缓冲区:是生产者和消费者之间的媒介,对生产者和消费者解耦. 当 缓冲区元素为满,生产者无法生产,消费者继续消费: 缓冲区元素为空, ...
- Python利用PIL将数值矩阵转化为图像
要求:输入一个n*n的矩阵,矩阵包括从-1到1的浮点数,将其转化为可视化图像 调库 from PIL import Image import numpy as np import math 载入图像, ...
- css鼠标悬浮控制元素隐藏与显示
在网页开发中经常有需求是鼠标移动到一个元素A身上时,另外一个元素B显示. 如下图 当鼠标移到图片上时,相关的描述从下方显示出来. css实现原理与情景: A 是 B 的父元素 B 默认隐藏 B{opa ...
- git 公钥的使用
码云 https://gitee.com/ ,之前在教程视频中看到使用 码云 今天自己也撸了一把.第一次使用.打开官方网站看到免费开通企业版,就点了这个原本以为需要填写很多资料,实际操作下来,就一个 ...
- C++性能榨汁机之虚函数的开销
C++性能榨汁机之虚函数的开销 来源 http://irootlee.com/juicer_vtable/ 虚函数的实现 虽然C++标准并没有规定编译器实现虚函数的方式,但是大部分编译器均是采用了虚 ...
- Spring源码解析 - springMVC核心代码
一.首先来讲解下springMVC的底层工作流程 1.首先我们重点放在前端控制器(DispatcherServlet) 其类图: 因为从流程图看,用户的请求最先到达就是DispatcherServle ...