mysql需求场景-列转行

由于是模拟场景,直入主题,表名称及结构定义很low,请忽视!

创新互联公司主营二连浩特网站建设的网络公司,主营网站建设方案,APP应用开发,二连浩特h5小程序开发搭建,二连浩特网站营销推广欢迎二连浩特等地区企业咨询

(1)现有学生分数表如下:
MySQL> select * from vmark1;
+-----+--------+--------+------+
| sid | sname | course | mark |
+-----+--------+--------+------+
| 1 | 张三 | jsj | 90 |
| 1 | 张三 | yuwen | 65 |
| 1 | 张三 | yingyu | 80 |
| 2 | 李四 | jsj | 80 |
| 2 | 李四 | yuwen | 98 |
| 2 | 李四 | yingyu | 90 |
+-----+--------+--------+------+
6 rows in set (0.00 sec)

(2)需求是以更直观的方式,查看学生的成绩。细化也就是把mark这列的值,以行的形式展示。通过case..when语句查询:
mysql> select sid,sname,case when course='jsj' then mark end jsj,case when course='yuwen' then mark end yuwen,case when course='yingyu' then mark end yingyu from vmark1;
+-----+--------+------+-------+--------+
| sid | sname | jsj | yuwen | yingyu |
+-----+--------+------+-------+--------+
| 1 | 张三 | 90 | NULL | NULL |
| 1 | 张三 | NULL | 65 | NULL |
| 1 | 张三 | NULL | NULL | 80 |
| 2 | 李四 | 80 | NULL | NULL |
| 2 | 李四 | NULL | 98 | NULL |
| 2 | 李四 | NULL | NULL | 90 |
+-----+--------+------+-------+--------+
6 rows in set (0.01 sec)

我靠,变成行了。但看起来依然很不友好!

(3)通过函数和group by字句优化:
mysql> select sid,sname,sum(case when course='jsj' then mark end) jsj,sum(case when course='yuwen' then mark end) yuwen,sum(case when course='yingyu' then mark end) yingyu from vmark1 group by sid;
+-----+--------+------+-------+--------+
| sid | sname | jsj | yuwen | yingyu |
+-----+--------+------+-------+--------+
| 1 | 张三 | 90 | 65 | 80 |
| 2 | 李四 | 80 | 98 | 90 |
+-----+--------+------+-------+--------+
2 rows in set (0.00 sec)

“哇塞,要的就是这效果。别动了。。就这样”。运营妹子激动的说。

好吧。over.


网站题目:mysql需求场景-列转行
网站路径:http://bzwzjz.com/article/igocod.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 网站建设公司 高端网站设计 成都网站设计 成都网站建设公司 网站建设 四川成都网站制作 定制网站设计 移动手机网站制作 成都网站建设 网站设计制作 重庆网站建设 成都品牌网站建设 成都网站建设 达州网站设计 重庆企业网站建设 成都响应式网站建设公司 成都网站设计 定制网站制作 成都响应式网站建设 网站建设方案 成都网站建设公司 成都网站建设