SQL行转列、列转行

这个主题还是比较常见的,行转列主要适用于对数据作聚合统计,如统计某类目的商品在某个时间区间的销售情况。

整理测试数据

create table wyc_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);

行转列

主要思路是分组后使用case进行条件判断处理

#行转列
select a.date,sum(case a.namewhen '小说' then a.scountelse 0end) 'sum_小说',max(case a.namewhen '小说' then a.scountelse 0end) 'max_小说',sum(case a.namewhen '微信' then a.scountelse 0end) '微信',max(case a.namewhen '小说' then a.scountelse 0end) 'max_微信'
fromwyc_test a
group by date;

结果:

列转行

主要思路也是分组后使用case

#列转行
select a.date,concat('小说:',cast(sum(case a.namewhen '小说' then a.scountelse 0end)as char),'微信',cast(sum(case a.namewhen '微信' then a.scountelse 0end)as char)) as 'str'
fromwyc_test a
group by a.date;
#列转行
#1.使用mysql提供的函数分组
select a.date,group_concat(a.name,'总量:', a.scount) from wyc_test a group by a.date,a.name;
#2.使用mysql提供的函数分组
select a.date,a.name, group_concat(a.name, '总量:', a.scount) from wyc_test a group by a.date,a.name;
#3.普通group结合字符串拼接
SELECT a.date,concat('小说总量:',cast(sum(case a.namewhen '小说' then a.scountelse 0end)as char)) as '小说',concat('微信总量:',cast(sum(case a.namewhen '微信' then a.scountelse 0end)as char)) as '微信'
fromwyc_test a
group by a.date;

结果:

SQL中行转列、列转行相关推荐

  1. 做图表统计你需要掌握SQL Server 行转列和列转行

    原文:做图表统计你需要掌握SQL Server 行转列和列转行 说在前面 做一个数据统计和分析的项目,每天面对着各种数据,经过存储过程从源表计算汇总后需要写入中间结果表以提高数据使用效率,那么此时就需 ...

  2. oracle 行转列的sql,Oracle行转列、列转行的Sql语句总结

    目录结构如下: 行转列 列转行 [一].行转列 1.1.初始测试数据 表结构:TEST_TB_GRADE sql代码 create table TEST_TB_GRADE ( ID NUMBER(10 ...

  3. sqlserver中某列转成以逗号连接的字符串及逆转、数据行转列列转行

    Sql Server 列转逗号隔开的字符串 和 逆转 https://www.cnblogs.com/duanyuerui/p/7567692.html Sql server 中将数据行转列列转行(一 ...

  4. SQL Server 行转列

    SQL Server 行转列 继上次的列转行需求之后,最近又遇到一个行转列的需求.因为表设计的时候考虑到可能存在多类型的数据,但是其实最后使用只有固定的几种,所以前端界面也都是固定的.所以这个时候改表 ...

  5. Hive(行转列 列转行)

    Hive(行转列 列转行) 行转列 行专列常用的几种方式有 collect_list collect_set 举例说明 原数据 sql SELECT concat_ws("|",c ...

  6. mysql 复杂行转列_有趣的SQL(四) 行转列的复杂应用和优化思想

    原标题:有趣的SQL(四) 行转列的复杂应用和优化思想 导读 本文节选自松华老师<SQL优化专栏> 大家好,我是知数堂SQL 优化班老师 网名:骑龟的兔子 在之前的的系列文章:有趣的SQL ...

  7. mysql 复杂行转列_有趣的SQL(4) 行转列的复杂应用和优化思想

    大家好,我是知数堂SQL 优化班老师 网名:骑龟的兔子 在之前的的系列文章中,有意思的SQL(3) 行转列,列转行和复制 已经给大家介绍了,行转列,列转行,复制等方法. 在这篇文章中,对其进行更深一层 ...

  8. mysql超长sql查询_超长SQL怎么查询?MySQL列长度限制有哪些 | 学步园

    MySQL字符串的限制长度看似重要性不要,其实和整个MySQL数据库的安全性是息息相关的,很值得我们去深入研究分析.SQL注入攻击一直都在被广泛的讨论,然而人们却忽略了今天我将要介绍的这两个安全隐患, ...

  9. java中的无效的列类型_java.sql.SQLException: 无效的列类型: 1111

    在使用Mybaits Plus更新数据时报错: 2018-09-05 10:55:40.712 DEBUG 15828 --- [nio-8110-exec-1] c.c.x.s.m.A.update ...

  10. SQL Server中的列存储索引

    先决条件 (Prerequisite ) 通过理论和实践措施可以更好地解释与SQL Server 2012列存储索引有关的讨论. 因此,对于实际测量部分–我将使用AdventureWorksDW201 ...

最新文章

  1. SpringBoot之集成swagger2
  2. DNA甲基化与表观遗传学数据挖掘与分析学习会 (10月26-27 上海)
  3. ubuntu 网卡双网口 配置_Ubuntu 18.04 设置多网卡多端口聚合
  4. Linux下的iwpriv(iwlist、iwconfig)的简单应用
  5. 深度学习框架Caffe, MXNet, TensorFlow, Torch, CNTK性能测试报告
  6. abstract的一些用法
  7. 发布npm时遇到的两个小问题,解决方法
  8. Nexus3 功能介绍
  9. 解决chrome(谷歌)浏览器打开文件选择框响应速度慢的问题-小白实操记录
  10. C. Alternating Sum(数论——等比数列公式与变换)
  11. Web3.0:伟大的骗局,请无辜的各位做一个敢于大声说出来的孩子吧
  12. iOS游戏开发之Game Center研究
  13. VisualStudio,配置管理器,目标平台,x86,x64,win32 简介
  14. WP7 个人股票软件 GilStock v1.0 正式版
  15. 一份超详细的IBM公司JAVA基础面试题附答案以及解析(题库)
  16. java界面——可视化窗口入门级
  17. hana 查看表字段_SAP HANA 表格
  18. STM32L+BC20+MQTT连接阿里云传输温湿度数据并控制继电器
  19. 光是无限远服务器怎么登陆,sv独立客户端怎么连接服务器(sv独立客户端登录密码)...
  20. 【机器学习】总结了九种机器学习集成分类算法(原理+代码)

热门文章

  1. [Vue-Treeselect Warning] Unloaded branch node detected. “loadOptions“ prop is required to load its
  2. 【Latex】【插入图片】如何在latex中插入并列图片
  3. TCP和 UDP的区别
  4. cocos creator国际化i18n多语言工具cc-i18n
  5. java pdm 解析_java解析静态AIS原始数据
  6. yum-utils与yum-config-manager
  7. Scrapy绕过反爬虫策略汇总
  8. 鸿蒙系统生态建设怎样了,鸿蒙系统正式发布-华为OS生态建设开始布局
  9. 等额本金贷款和等额本息贷款计算和比较
  10. nvm安装步骤及使用方法