1103简单SQL 行转列思路
转自http://www.cnblogs.com/lhj588/p/3315876.html
-- 经典行列转化
DROP TABLE IF EXISTS TabName;
CREATE TABLE TabName (
Id INT(11) NOT NULL AUTO_INCREMENT,
NAME VARCHAR(20) DEFAULT NULL,
DATE DATE DEFAULT NULL,
Scount INT(11) DEFAULT NULL,
PRIMARY KEY (Id)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO TabName VALUES ('1', '小说', '2013-09-01', '10000');
INSERT INTO TabName VALUES ('2', '微信', '2013-09-01', '20000');
INSERT INTO TabName VALUES ('3', '小说', '2013-09-02', '30000');
INSERT INTO TabName VALUES ('4', '微信', '2013-09-02', '35000');
INSERT INTO TabName VALUES ('5', '小说', '2013-09-03', '31000');
INSERT INTO TabName VALUES ('6', '微信', '2013-09-03', '36000');
INSERT INTO TabName VALUES ('7', '小说', '2013-09-04', '35000');
INSERT INTO TabName VALUES ('8', '微信', '2013-09-04', '38000');
INSERT INTO TabName VALUES ('9', '小说', '2013-09-01', '10');
SELECT * FROM TabName;
-- 第零种 列表模式
ID NAME DATE SCOUNT
1 小说 '2013-9-1' 1000
-- 第一种 列表统计模式
SELECT
NAME,DATE,SUM(scount)
FROM TabName
GROUP BY NAME,DATE
-- 第二种 列转为行
DATE 小说 微信
'2013-09-01' 10000 20000
SELECT
DATE,
SUM(CASE WHEN NAME='小说' THEN Scount ELSE 0 END)AS '小说',
SUM(CASE WHEN NAME='微信' THEN Scount ELSE 0 END)AS '微信'
FROM TabName
GROUP BY DATE;
-- 第三种 行转为列
SELECT DATE, GROUP_CONCAT(NAME,'总量:',Scount) AS b_str FROM TabName
GROUP BY DATE;
SELECT DATE,NAME, GROUP_CONCAT(NAME,'总量:',Scount) AS b_str FROM TabName
GROUP BY DATE ,NAME;
1103简单SQL 行转列思路的更多相关文章
- Sql 行转列问题总结
行转列问题总结 1.行转列 ---1.最简单的行转列/* 问题:假设有张学生成绩表(tb)如下:姓名 课程 分数张三 语文 74张三 数学 83张三 物理 93李四 语文 74李四 数学 84李四 物 ...
- SQL 行转列
---1.最简单的行转列/* 问题:假设有张学生成绩表(tb)如下:姓名 课程 分数张三 语文 74张三 数学 83张三 物理 93李四 语文 74李四 数学 84李四 物理 94 想变成(得到如下结 ...
- SQL行转列,列转行
SQL 行转列,列转行 行列转换在做报表分析时还是经常会遇到的,今天就说一下如何实现行列转换吧. 行列转换就是如下图所示两种展示形式的互相转换 行转列 假如我们有下表: SELECT * FROM s ...
- 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 ...
- SQL行转列 (及EAV模型获取数据)
参考文章: http://www.williamsang.com/archives/1508.html 情景简介 学校里面记录成绩,每个人的选课不一样,而且以后会添加课程,所以不需要把所有课程当作列. ...
随机推荐
- CentOS 6.3下配置软RAID(Software RAID)
一.RAID 简介 RAID 是英文Redundant Array of Independent Disks 的缩写,翻译成中文意思是“独立磁盘冗余阵列”,有时也简称磁盘阵列(Disk Array). ...
- [转]基于display:table的CSS布局
当IE8发布时,它将支持很多新的CSS display属性值,包括与表格相关的属性值:table.table-row和table-cell,它也是最后一款支持这些属性值的主流浏览器.它标志着复杂CSS ...
- 单机搭建Android开发环境(五)
前文介绍了Android系统开发环境的搭建,本文将简单介绍Android应用开发环境的搭建. 基于Android Studio搭建应用开发环境,相比使用Eclipse简单得多.Android Stud ...
- CF723D. Lakes in Berland[DFS floodfill]
D. Lakes in Berland time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- CF721C. Journey[DP DAG]
C. Journey time limit per test 3 seconds memory limit per test 256 megabytes input standard input ou ...
- 多年前写的一个ASP.NET网站管理系统,到现在有些公司在用
多年前写的一个ASP.NET网站管理系统,到现在有些公司在用 今早上接到一个电话,自已多年前写的一个ASP.NET网站管理系统,一个公司在用,出了点问题, 第一点是惊奇,5,6年前的东东,手机号码换了 ...
- uva10001 Garden of Eden
Cellular automata are mathematical idealizations of physical systems in which both space and time ar ...
- js关闭当前页面(窗口)的几种方式总结(转)
js关闭当前页面(窗口)的几种方式总结 1. 不带任何提示关闭窗口的js代码 代码如下 <a href="javascript:window.opener=null;windo ...
- JavaScript Boolean 对象
JavaScript Boolean 对象 Boolean 对象 Boolean 对象用于转换一个不是 Boolean 类型的值转换为 Boolean 类型值 (true 或者false). Bool ...
- .Net Core 控制台输出中文乱码
Net Core 控制台输出中文乱码的解决方法: public static void Main(string[] args) { Console.Output ...