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

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

作者: 晟文刀 | 来源:发表于2016-07-29 20:44 被阅读1134次
    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 姓名

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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/ixizjttx.html