温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何实现mysql行转列

发布时间:2020-06-03 17:28:56 来源:网络 阅读:489 作者:三月 栏目:MySQL数据库

下面一起来了解下如何实现mysql行转列,相信大家看完肯定会受益匪浅,文字在精不在多,希望如何实现mysql行转列这篇短内容是你想要的。 

原始数据如下:


mysql> select id,sdkname,sid,date,total_count from u1ge_query_log;

+------+----------------+------+------------+-------------+

| id   | sdkname        | sid  | date       | total_count |

+------+----------------+------+------------+-------------+

|  521 | ICC_ICCGAME(3) | 11   | 2017-05-01 |           0 |

|  522 | ICC_ICCGAME(3) | 11   | 2017-05-02 |           0 |

|  523 | ICC_ICCGAME(3) | 11   | 2017-05-03 |           1 |

|  531 | ICC_HUAWEI     | 11   | 2017-05-01 |           0 |

|  532 | ICC_HUAWEI     | 11   | 2017-05-02 |           0 |

|  533 | ICC_HUAWEI     | 11   | 2017-05-03 |           0 |

|  541 | ICC_ICCGAME(0) | 11   | 2017-05-01 |           0 |

|  542 | ICC_ICCGAME(0) | 11   | 2017-05-02 |           0 |

|  543 | ICC_ICCGAME(0) | 11   | 2017-05-03 |           0 |

|  551 | ICC_UC         | 11   | 2017-05-01 |           0 |

|  552 | ICC_UC         | 11   | 2017-05-02 |           0 |

|  553 | ICC_UC         | 11   | 2017-05-03 |           0 |

|  561 | ICC_QIHOO      | 11   | 2017-05-01 |           0 |

|  562 | ICC_QIHOO      | 11   | 2017-05-02 |           0 |

|  563 | ICC_QIHOO      | 11   | 2017-05-03 |           0 |

|  571 | ICC_VIVO       | 11   | 2017-05-01 |           0 |

|  572 | ICC_VIVO       | 11   | 2017-05-02 |           0 |

|  573 | ICC_VIVO       | 11   | 2017-05-03 |           0 |

|  581 | ICC_GIONEE     | 11   | 2017-05-01 |           0 |

|  582 | ICC_GIONEE     | 11   | 2017-05-02 |           0 |

|  583 | ICC_GIONEE     | 11   | 2017-05-03 |           0 |

要求如下显示:

如何实现mysql行转列


此处用到了行转列,由于列不固定,考虑使用动态sql

SET @d=(select GROUP_CONCAT('if(sdkname=\'',sdkname,'\' ,total_count,0) as `',sdkname,'`')
 FROM (SELECT DISTINCT sdkname FROM pcik_log_dep.u1ge_query_log ) A); 

SET @sql=CONCAT('select date,',@d,'from pcik_log_dep.u1ge_query_log group by date');
  
PREPARE sdtmt from @sql;
EXECUTE sdtmt;
deallocate prepare sdtmt;


------------+---------+-----------+-------------+------------+------------+----------------+----------------+------------+-----------+----------+-----------+--------+----------+------------+

| date       | icctest | ICC_BAIDU | ICC_COOLPAD | ICC_GIONEE | ICC_HUAWEI | ICC_ICCGAME(0) | ICC_ICCGAME(3) | ICC_LENOVO | ICC_MEIZU | ICC_OPPO | ICC_QIHOO | ICC_UC | ICC_VIVO | ICC_XIAOMI |

+------------+---------+-----------+-------------+------------+------------+----------------+----------------+------------+-----------+----------+-----------+--------+----------+------------+

| 2017-05-01 |       0 |         0 |           0 |          0 |          0 |              0 |              0 |          0 |         0 |        0 |         0 |      0 |        0 |          0 |

| 2017-05-02 |       0 |         0 |           0 |          0 |          0 |              0 |              0 |          0 |         0 |        0 |         0 |      0 |        0 |          0 |

| 2017-05-03 |       0 |         0 |           0 |          0 |          0 |              0 |              1 |          0 |         0 |        0 |         0 |      0 |        0 |          0 |

| 2017-05-04 |       0 |         0 |           0 |          0 |          0 |              0 |           4380 |          0 |         0 |        0 |         0 |      0 |        0 |          0 |

| 2017-05-05 |       0 |         0 |           0 |          0 |          0 |              0 |           5126 |          0 |         0 |        0 |         0 |      0 |        0 |          0 |

| 2017-05-06 |       0 |         0 |           0 |          0 |          0 |              0 |           5571 |          0 |         0 |        0 |         0 |      0 |        0 |          0 |

| 2017-05-07 |       0 |         0 |           0 |          0 |          0 |              0 |           5888 |          0 |         0 |        0 |         0 |      0 |        0 |          0 |

| 2017-05-08 |       0 |         0 |           0 |          0 |          0 |              0 |           6135 |          0 |         0 |        0 |         0 |      0 |        0 |          0 |

| 2017-05-09 |       0 |         0 |           0 |          0 |          0 |              0 |           6199 |          0 |         0 |        0 |         0 |      0 |        0 |          0 |

| 2017-05-10 |       0 |         0 |           0 |          0 |          0 |              0 |           6199 |          0 |         0 |        0 |         0 |      0 |        0 |          0 |

+------------+---------+-----------+-------------+------------+------------+----------------+----------------+------------+-----------+----------+-----------+--------+----------+------------+

10 rows in set (0.00 sec)

 

看完如何实现mysql行转列这篇文章后,很多读者朋友肯定会想要了解更多的相关内容,如需获取更多的行业信息,可以关注我们的行业资讯栏目。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI