zoukankan      html  css  js  c++  java
  • Mysql实现行列转换

    前言:

      最近又玩起了sql语句,想着想着便给自己出了一道题目:“行列转换”。起初瞎折腾了不少时间也上网参考了一些博文,不过大多数是采用oracle数据库当中的一些便捷函数进行处理,比如”pivot”。那么,在Mysql环境下如何处理?

    自己举了个小例子:

                       

    sql代码实现:

     1 -- Step1:建表并插入数据
     2 
     3 -- Step2:中间转换,即“二维转一维”得到一维表。
     4 
     5 -- Step3:利用IF判断并“group by”即可得到目标结果表。
     6 
     7  
     8 
     9 -- 加载
    10 
    11 use test;
    12 
    13 create table score (
    14 
    15 name varchar(11),
    16 
    17 Math int,
    18 
    19 English int
    20 
    21 );
    22 
    23 insert into score values('',89,78);
    24 
    25 insert into score values('',77,81);
    26 
    27 insert into score values('',87,98);
    28 
    29  
    30 
    31 -- 查询生成目标表
    32 
    33 SELECT
    34 
    35 c2 AS '课程',
    36 
    37 SUM(IF(c1='',c3,0)) AS '',
    38 
    39 SUM(IF(c1='',c3,0)) AS '',
    40 
    41 SUM(IF(c1='',c3,0)) AS '' from(
    42 
    43 select name as c1,'Math' as c2,Math as c3 from score group by name
    44 
    45 Union 
    46 
    47 select name,'English' as c2,English from score group  by name
    48 
    49 ) AS tx group by c2;
    50 
    51  
    52 

    结语:

       目前为止,个人尚未发现Mysql当中存在可以便捷将表格行列快速转换的函数。以上只是个人的一点小尝试,欢迎有更好解法的朋友批评指正!

     

  • 相关阅读:
    深入理解JVM(二)--对象的创建
    深入理解JVM(一) -- 自动内存管理机制
    代理模式(Proxy)
    心知天气数据API 产品的高并发实践
    Jenkins 构建踩坑经历
    log4net SmtpAppender 踩坑总结
    从 ASP.NET Core 2.1 迁移到 2.2 踩坑总结
    在Windows上安装 Consul
    redis-desktop-manager 0.9.3 安装(最后一个免费版本)
    在Windows上安装Redis
  • 原文地址:https://www.cnblogs.com/SeaSky0606/p/4591135.html
Copyright © 2011-2022 走看看