zoukankan      html  css  js  c++  java
  • 【mysql经典题目】行转列

    参考:http://www.cnblogs.com/h07061108/p/mysql_questions.html#3806338

    实现如下效果

    CREATE TABLE IF NOT EXISTS tb_amount(
       `Id` INT NOT NULL AUTO_INCREMENT,
       `Year` CHAR(4),
       `Month` CHAR(2),
       `Amount` DECIMAL(5,2),
       PRIMARY KEY(`Id`)
    );
    
    INSERT INTO `tb_amount`(`Year`, `Month`, `Amount`) VALUES('1991', '1', '1.1');
    INSERT INTO `tb_amount`(`Year`, `Month`, `Amount`) VALUES('1991', '2', '1.2');
    INSERT INTO `tb_amount`(`Year`, `Month`, `Amount`) VALUES('1991', '3', '1.3');
    INSERT INTO `tb_amount`(`Year`, `Month`, `Amount`) VALUES('1991', '4', '1.4');
    INSERT INTO `tb_amount`(`Year`, `Month`, `Amount`) VALUES('1992', '1', '2.1');
    INSERT INTO `tb_amount`(`Year`, `Month`, `Amount`) VALUES('1992', '2', '2.2');
    INSERT INTO `tb_amount`(`Year`, `Month`, `Amount`) VALUES('1992', '3', '2.3');
    INSERT INTO `tb_amount`(`Year`, `Month`, `Amount`) VALUES('1992', '4', '2.4');
    
    SELECT `Year`,
    (SELECT Amount FROM   tb_amount m WHERE `Month`=1   AND m.`Year`=tb_amount.`Year`) AS m1,
    (SELECT Amount FROM   tb_amount m WHERE `Month`=2   AND m.`Year`=tb_amount.`Year`) AS m2,
    (SELECT Amount FROM   tb_amount m WHERE `Month`=3   AND m.`Year`=tb_amount.`Year`) AS m3,
    (SELECT Amount FROM   tb_amount m WHERE `Month`=4   AND m.`Year`=tb_amount.`Year`) AS m4
    FROM tb_amount  GROUP BY `Year`;

    或者

    select year,
    max(case month when 1 then amount else 0 end ) m1,
    max(case month when 2 then amount else 0 end) m2,
    max(case month when 3 then amount else 0 end) m3,
    max(case month when 4 then amount else 0 end) m4
    from tb_amount
    group by year;



  • 相关阅读:
    Message Flood SDUT 1500
    SDUT1482——二元多项式
    SDUT—2057 模拟题
    Eight(bfs+全排列的哈希函数)
    Pick-up sticks(判断两条线段是否相交)
    poj 1265 Area(pick定理)
    poj 2503 Babelfish(字典树哈希)
    poj 3007 Organize Your Train part II(静态字典树哈希)
    Surprising Strings(map类)
    Strange Way to Express Integers (一般模线性方程组)
  • 原文地址:https://www.cnblogs.com/xphdbky/p/7645898.html
Copyright © 2011-2022 走看看