请选择 进入手机版 | 继续访问电脑版

程序人生

 找回密码
 注册

QQ登录

只需一步,快速开始

程序人生 门户 数据库 mysql 查看内容

Mysql列转行的方法

2016-10-23 13:31| 发布者: sean| 查看: 231| 评论: 0

摘要: mysql数据库列如何转成行,这里给大家用一个实例演示下下面的数据表格式,要将列转换成行显示新建一张mysql数据库表DROP TABLE IF EXISTS `test`; CREATE TABLE `test` ( `year` int(11) DEFAULT NULL, `month` in ...
mysql数据库列如何转成行,这里给大家用一个实例演示下
下面的数据表格式,要将列转换成行显示
 
新建一张mysql数据库表
 DROP TABLE IF EXISTS `test`;
   CREATE TABLE `test` (
     `year` int(11) DEFAULT NULL,
    `month` int(11) DEFAULT NULL,
     `amount` double DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

向表中插入测试数据
INSERT INTO `test` VALUES ('1991', '1', '1.1');
    INSERT INTO `test` VALUES ('1991', '2', '1.2');
    INSERT INTO `test` VALUES ('1991', '3', '1.3');
    INSERT INTO `test` VALUES ('1991', '4', '1.4');
    INSERT INTO `test` VALUES ('1992', '1', '2.1');
    INSERT INTO `test` VALUES ('1992', '2', '2.2');
    INSERT INTO `test` VALUES ('1992', '3', '2.3');
    INSERT INTO `test` VALUES ('1992', '4', '2.3');

实现列转行的主要思想:利用SUM(IF()) 生成列 + WITH ROLLUP 生成汇总行,并利用 IFNULL将汇总行标题显示为 Total_num
得到列转行的转换sql语句
  select year,
      sum(if(month=1,amount,0)) as "M1",
       sum(if(month=2,amount,0)) as "M2",
       sum(if(month=3,amount,0)) as "M3",
       sum(if(month=4,amount,0)) as "M4"
    from test
   GROUP by year;

最后看看显示效果


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

相关分类


关于程序人生网|小黑屋|手机版|Archiver|

程序人生 | QQ

粤公网安备 44040202000007号

( 粤ICP备13038131号-1 )

返回顶部