zoukankan      html  css  js  c++  java
  • 行转列

    准备表:

    CREATE TABLE student(
      id int PRIMARY KEY AUTO_INCREMENT,
      name varchar(20),
      course varchar(20),
      score float);
    
    INSERT INTO student(name, course, score) VALUES ('张三','数学',34),
                        ('张三','语文',58),
                        ('张三','英语',58),
                        ('李四','数学',45),
                        ('李四','语文',87),
                        ('李四','英语',45),
                        ('王五','数学',76),
                        ('王五','语文',34),
                        ('王五','英语',89);
    View Code
    mysql> select * from student;
    +----+--------+--------+-------+
    | id | name   | course | score |
    +----+--------+--------+-------+
    |  1 | 张三   | 数学   |    34 |
    |  2 | 张三   | 语文   |    58 |
    |  3 | 张三   | 英语   |    58 |
    |  4 | 李四   | 数学   |    45 |
    |  5 | 李四   | 语文   |    87 |
    |  6 | 李四   | 英语   |    45 |
    |  7 | 王五   | 数学   |    76 |
    |  8 | 王五   | 语文   |    34 |
    |  9 | 王五   | 英语   |    89 |
    +----+--------+--------+-------+

    列转行之后:

    SELECT name,
           max(CASE WHEN course = "语文" THEN score ELSE 0 END) 语文,
           max(CASE WHEN course = "数学" THEN score ELSE 0 END) 数学,
           max(CASE WHEN course = "英语" THEN score ELSE 0 END) 英语
    FROM student1
    GROUP BY name;
    +--------+--------+--------+--------+
    | name   | 数学   | 语文   | 英语   |
    +--------+--------+--------+--------+
    | 张三   |     34 |     58 |     58 |
    | 李四   |     45 |     87 |     45 |
    | 王五   |     76 |     34 |     89 |
    +--------+--------+--------+--------+

    列转行

  • 相关阅读:
    BZOJ4553: [Tjoi2016&Heoi2016]序列
    BZOJ4552: [Tjoi2016&Heoi2016]排序
    BZOJ4551: [Tjoi2016&Heoi2016]树
    BZOJ4556: [Tjoi2016&Heoi2016]字符串
    BZOJ4546: codechef XRQRS
    CC 3-Palindromes(manacher)
    hdu3294(manacher)
    hdu4513(manacher)
    poj3974(manacher)
    CF 518D(概率dp)
  • 原文地址:https://www.cnblogs.com/wuxiping2019/p/12030783.html
Copyright © 2011-2022 走看看