zoukankan      html  css  js  c++  java
  • mysql行转换为列

    1.建表

    CREATE TABLE `t_log_code_num` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `server_id` int(3) NOT NULL,
      `date` date NOT NULL,
      `code` varchar(20) NOT NULL,
      `num` int(10) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

    2.录入数据

    INSERT INTO t_log_code_num (`server_id`, `date`, `code`, `num`) VALUES ('1', '2017-07-31', '201058', '1');
    INSERT INTO t_log_code_num (`server_id`, `date`, `code`, `num`) VALUES ('2', '2017-07-31', '201612', '2113');
    INSERT INTO t_log_code_num (`server_id`, `date`, `code`, `num`) VALUES ('1', '2017-07-30', '201058', '1');
    INSERT INTO t_log_code_num (`server_id`, `date`, `code`, `num`) VALUES ('2', '2017-07-30', '201314', '310');
    INSERT INTO t_log_code_num (`server_id`, `date`, `code`, `num`) VALUES ('1', '2017-07-29', '201322', '1890');
    INSERT INTO t_log_code_num (`server_id`, `date`, `code`, `num`) VALUES ('2', '2017-07-29', '201203', '379');

    3.数据显示

    4.统计sql

    select t.`code`,
        sum(case t.date when '2017-07-29' then t.num else 0 end ) as '2017-07-29',
        sum(case t.date when '2017-07-30' then t.num else 0 end ) as '2017-07-30',
        sum(case t.date when '2017-07-31' then t.num else 0 end ) as '2017-07-31'
     from (
    select date,code, sum(num) num from t_log_code_num GROUP BY date,code
    ) t GROUP BY t.`code`;

    5.统计结果

    代码如下:

    CREATE TABLE `t_log_code_num` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `server_id` int(3) NOT NULL,
      `date` date NOT NULL,
      `code` varchar(20) NOT NULL,
      `num` int(10) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    
    INSERT INTO t_log_code_num (`server_id`, `date`, `code`, `num`) VALUES ('1', '2017-07-31', '201058', '1');
    INSERT INTO t_log_code_num (`server_id`, `date`, `code`, `num`) VALUES ('2', '2017-07-31', '201612', '2113');
    INSERT INTO t_log_code_num (`server_id`, `date`, `code`, `num`) VALUES ('1', '2017-07-30', '201058', '1');
    INSERT INTO t_log_code_num (`server_id`, `date`, `code`, `num`) VALUES ('2', '2017-07-30', '201314', '310');
    INSERT INTO t_log_code_num (`server_id`, `date`, `code`, `num`) VALUES ('1', '2017-07-29', '201322', '1890');
    INSERT INTO t_log_code_num (`server_id`, `date`, `code`, `num`) VALUES ('2', '2017-07-29', '201203', '379');
    
    SELECT * from t_log_code_num;
    
    select t.`code`,
        sum(case t.date when '2017-07-29' then t.num else 0 end ) as '2017-07-29',
        sum(case t.date when '2017-07-30' then t.num else 0 end ) as '2017-07-30',
        sum(case t.date when '2017-07-31' then t.num else 0 end ) as '2017-07-31'
     from (
    select date,code, sum(num) num from t_log_code_num GROUP BY date,code
    ) t GROUP BY t.`code`;
  • 相关阅读:
    新零售解决方案体系架构
    设计模式-分类
    设计模式-设计原则
    一天一个 Linux 命令(12):tree 命令
    RabbitMQ中如何保证消息的可靠传输?如果消息丢了怎么办
    为什么使用MQ?
    一天一个 Linux 命令(11):cp命令
    数据结构和算法-线性查找-二分查找
    作图工具汇总
    Git 命令大全,Git命令汇总,Git命令说明
  • 原文地址:https://www.cnblogs.com/zhouj/p/7269930.html
Copyright © 2011-2022 走看看