【MYSQL第1篇】 如何将查询的行与列数据进行转置

MYSQL1.jpg

本篇着重解决用MYSQL数据库将数据行与列相互转换进行查询,我将直接用实际的例子来讲解。

第一 将某列的分类数据转换成多列数据

掌握SUM(CASE WHEN column1=‘x’ THEN column2 END)

Paste_Image.png

转换成

Paste_Image.png

在MYSQL中将运用函数为case when then,代码如下:

SELECT
姓名,
SUM( CASE WHEN 科目 = '语文' THEN 成绩 END ) AS 语文,
SUM( CASE WHEN 科目 = '数学' THEN 成绩 END ) AS 数学,
SUM( CASE WHEN 科目 = '英语' THEN 成绩 END ) AS 英语
FROM
成绩表
GROUP BY 姓名;
记住一定要把GROUP BY 姓名;语句加上,不然查询的结果只有一条数据;

第二 将多列的分类数据转换成“类别字段+数值字段”

掌握UNION ALL
依然用上个例子反推回去。

SELECT 姓名, '语文' AS 科目,
SUM(语文) AS 成绩
FROM 成绩表2
GROUP BY 姓名
UNION ALL
SELECT 姓名, '数学' AS 科目,
SUM(数学) AS 成绩
FROM 成绩表2
GROUP BY 姓名
UNION ALL
SELECT 姓名, '英语' AS 科目,
SUM(英语) AS 成绩
FROM 成绩表2
GROUP BY 姓名

记住一定要在‘语文’、‘数学’、‘英语’三个科目前添加英文状态下的单引号,不然科目这个字段出来的数据和成绩字段一样。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 50个常用的sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname...
    哈哈海阅读 4,983评论 0 7
  • 诸事不顺。 很多事情发生在了不该出现的时候。 比如计算机二级, 英语四级,我讨厌的口才学课程以及我坏掉的电脑。 无...
    尹江川阅读 2,761评论 1 0
  • 一次偶然的机会,有幸聆听了一场音乐会,由于自己是个音乐的门外汉,完全听不懂音乐表达的情感,因此整场不敢鼓掌,深怕鼓...
    十八贝勒阅读 4,231评论 0 3
  • 昨天估计是在公司加班被冻着了,下午出公司大楼又被晒了一把,接着又是地铁里的严寒,加上晚上溜达一吹风,这一折腾就给整...
    只字半语阅读 728评论 0 0