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