zoukankan      html  css  js  c++  java
  • 行转列与CASE.....WHEN...

    SET FOREIGN_KEY_CHECKS=0;
    
    -- ----------------------------
    -- Table structure for tabname
    -- ----------------------------
    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 AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of tabname
    -- ----------------------------
    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', '30000');

    查询结果:

    id   Name   Date          Scount
    1
    小说 2013-09-01 10000 2 微信 2013-09-01 20000 3 小说 2013-09-02 30000 4 微信 2013-09-02 35000 5 小说 2013-09-03 31000 6 微信 2013-09-03 36000 7 小说 2013-09-04 35000 8 微信 2013-09-04 38000 9 微信 2013-09-01 30000

    执行:

    SELECT 
    CASE NAME WHEN '小说' THEN Scount ELSE 0 END  小说,
    CASE NAME WHEN '微信' THEN Scount ELSE 0 END  微信 
    FROM TabName  
    where Date='2013-09-01'

    得到:

    小说       微信
    10000     0
    0        20000
    0        30000

    执行:

    SELECT 
    SUM(CASE NAME WHEN '小说' THEN Scount ELSE 0 END ) 小说,
    SUM(CASE NAME WHEN '微信' THEN Scount ELSE 0 END ) 微信 
    FROM TabName  
    where Date='2013-09-01'

    得到:

    小说      微信
    10000    50000

    执行:

    SELECT Date ,
    SUM(CASE NAME WHEN '小说' THEN Scount ELSE 0 END ) 小说,
    SUM(CASE NAME WHEN '微信' THEN Scount ELSE 0 END ) 微信 
    FROM TabName  
    GROUP BY Date

    得到:

    Date      小说    微信
    2013
    -09-01 10000 50000 2013-09-02 30000 35000 2013-09-03 31000 36000 2013-09-04 35000 38000
  • 相关阅读:
    JavaScript中需要注意的几个问题
    前端编码规范之JavaScript
    那些年,我们一起玩过的响应式布局
    前端编码规范之CSS
    一个不陌生的JS效果-marquee,用css3来实现
    解读jQuery中extend函数
    字体大小自适应纯css解决方案
    浅谈叶小钗面试的几个问题
    【Python开发】C和Python之间的接口实现
    【Python开发】【编程开发】各种系统的清屏操作命令
  • 原文地址:https://www.cnblogs.com/soar-hu/p/6747609.html
Copyright © 2011-2022 走看看