mysql 行转列

这篇具有很好参考价值的文章主要介绍了mysql 行转列。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

以下是其中比较常见的几种方法:

  1. 使用GROUP_CONCAT函数
    可以使用GROUP_CONCAT函数将多行数据合并为一行,并以逗号或其他分隔符进行分隔。通过SELECT语句和GROUP BY子句,可以将数据行转换为列。具体语法如下:
SELECT
    id,
    GROUP_CONCAT(CASE WHEN status = 'A' THEN value ELSE NULL END) AS 'statusA',
    GROUP_CONCAT(CASE WHEN status = 'B' THEN value ELSE NULL END) AS 'statusB',
    GROUP_CONCAT(CASE WHEN status = 'C' THEN value ELSE NULL END) AS 'statusC'
FROM
    your_table
GROUP BY
    id;

其中,id表示非透视列,status表示需要转换为列的字段,value表示需要被转换的数据。

  1. 使用子查询
    可以使用子查询将变量名称作为列名,然后将数据行转换为列。具体语法如下:
SELECT
    id,
    (SELECT value FROM your_table WHERE id=t.id AND status='A') AS 'statusA',
    (SELECT value FROM your_table WHERE id=t.id AND status='B') AS 'statusB',
    (SELECT value FROM your_table WHERE id=t.id AND status='C') AS 'statusC'
FROM
    (SELECT DISTINCT id FROM your_table) AS t;

其中,id表示非透视列,status表示需要转换为列的字段,value表示需要被转换的数据。

  1. 使用连接和中间表
    可以使用临时表或中间表来将行数据转换为列数据。具体语法如下:
CREATE TEMPORARY TABLE temp_table
SELECT
    id,
    MAX(CASE WHEN status = 'A' THEN value ELSE NULL END) AS 'statusA',
    MAX(CASE WHEN status = 'B' THEN value ELSE NULL END) AS 'statusB',
    MAX(CASE WHEN status = 'C' THEN value ELSE NULL END) AS 'statusC'
FROM
    your_table
GROUP BY
    id;

SELECT * FROM temp_table;

以上语句将行数据转换为列数据,并将结果存储在中间表temp_table中。使用SELECT语句从临时表中读取数据即可。文章来源地址https://www.toymoban.com/news/detail-566794.html

到了这里,关于mysql 行转列的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mysql行转列函数

    group_concat() 例: select oid from Test;  select group_concat( oid ) from Test;

    2024年02月14日
    浏览(31)
  • 5分钟搞懂MySQL - 行转列

    小伙伴想精准查找自己想看的MySQL文章?喏 → MySQL专栏目录 | 点击这里   MySQL 行转列 ,对经常处理数据的同学们来说,一定是不陌生的,甚至是印象深刻,因为它大概率困扰过你,让你为之一愣~ 但当你看到本文后,这个问题就不在是问题,及时收藏,以后谁再问你这个问

    2023年04月08日
    浏览(45)
  • MySQL中的经典面试题——行转列(列转行)

    目录 1、简介:   1. 行转列(Pivot): 2. 列转行(Unpivot): 2、行转列,列转行的思想 3、实现 3.1、实现行转列 3.2、总结(行转列)实现的两种方法   3.3、实现(列转行)  3.4、总结 (列转行)         在MySQL中,行转列(Pivot)和列转行(Unpivot)是用于改变数据表格

    2024年02月03日
    浏览(35)
  • 搞定mysql的 行转列(7种方法) 和 列转行

    一、行转列 1、使用case…when…then  2、使用SUM(IF()) 生成列 3、使用SUM(IF()) 生成列 + WITH ROLLUP 生成汇总行 4、使用SUM(IF()) 生成列,直接生成汇总结果,不再利用子查询 5、使用SUM(IF()) 生成列 + UNION 生成汇总行,并利用 IFNULL将汇总行标题显示为 Total 6、动态查询列值不确定的情况

    2024年03月12日
    浏览(41)
  • Mysql 行转列,把逗号分隔的字段拆分成多行

    源数据 变更后的数据 第一种 先执行下面的SQL,看不看能不能执行,如果有结果,代表数据库版本是可以的,可以看下面和自己表关联的SQL,如果不行用第二种。 示例SQL 和业务结合在一起使用 其核心在于 mysql.help_topic ,但是版本太低的数据库版本不支持,如果不支持,可以

    2024年02月02日
    浏览(33)
  • Mysql一维表转二维表,动态的行转列

    背景 想利用Grafana做数据展示,将一维的长表优化成二维数据表格展示。 将一维表转换为二维表,也就是将行转换为列,可以使用MySQL的PIVOT语句来完成。 PIVOT是一种在关系型数据库中将行转换为列的技术。在MySQL中,可以使用PIVOT语句将普通的查询结果转换为一个带有动态列

    2024年02月15日
    浏览(32)
  • mysql~GROUP_CONCAT实现关系表的行转列

    GROUP_CONCAT 是 MySQL 中用于将查询结果集中的多行数据合并为单个字符串的聚合函数。它将每行数据的指定字段值连接起来,并以指定的分隔符分隔,最终返回一个包含所有值的字符串。 以下是 GROUP_CONCAT 函数的一般语法: column_name:要连接的字段名。 SEPARATOR:可选参数,用于

    2024年04月12日
    浏览(27)
  • MySQL中的面试题——行转列(列转行)手把手详解思想

    目录 1、什么是行转列,列转行 ? 1.1、概念: 1.2、行转列和列转行的思想 1.2.1、行转列的思想? 1.2.2、列转行的思想? 3、实操讲解 3.1、实现行转列  3.2、总结:行转列实现的两种方法    3.3、实现列转行  3.4、总结 :列转行 4、动手练习         在MySQL中,行转列(

    2024年02月03日
    浏览(49)
  • Hive数据仓库行转列

    查了很多资料发现网上很多文章都是转发和抄袭,有些问题。这里分享一个自己项目中使用的行转列例子,供大家参考。代码如下: 如果是在SparkSQL或Presto平台,或者阿里云的MaxCompute平台,还可使用如下方式:

    2024年02月21日
    浏览(42)
  • 【SQL开发实战技巧】系列(三十七):数仓报表场景☞从表内始终只有近两年的数据,要求用两列分别显示其中一年的数据聊行转列隐含信息的重要性

    【SQL开发实战技巧】系列(一):关于SQL不得不说的那些事 【SQL开发实战技巧】系列(二):简单单表查询 【SQL开发实战技巧】系列(三):SQL排序的那些事 【SQL开发实战技巧】系列(四):从执行计划讨论UNION ALL与空字符串UNION与OR的使用注意事项 【SQL开发实战技巧】系列

    2023年04月18日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包