ZBLOG

mysql 列转行的方式

在 MySQL 中,可以使用 GROUP_CONCAT 函数将多行数据的某个字段合并成一行,并使用 CASE 表达式实现列转行。

例如,以下是一个示例表:

  1. +----+-------+-------+
  2. | id | name | grade |
  3. +----+-------+-------+
  4. | 1 | Alice | A |
  5. | 2 | Bob | B |
  6. | 3 | Carol | C |
  7. | 4 | Dave | A |
  8. | 5 | Eve | B |
  9. +----+-------+-------+

如果要将 grade 转换为列,并按照不同的值进行汇总,则可以使用以下查询语句:

  1. SELECT
  2. name,
  3. MAX(CASE WHEN grade = 'A' THEN 'Yes' ELSE '' END) AS A,
  4. MAX(CASE WHEN grade = 'B' THEN 'Yes' ELSE '' END) AS B,
  5. MAX(CASE WHEN grade = 'C' THEN 'Yes' ELSE '' END) AS C
  6. FROM
  7. students
  8. GROUP BY
  9. name;

该查询结果如下:

  1. +-------+---+---+---+
  2. | name | A | B | C |
  3. +-------+---+---+---+
  4. | Alice | Yes | |
  5. | Bob | | Yes |
  6. | Carol | | | Yes |
  7. | Dave | Yes | |
  8. | Eve | | Yes |
  9. +-------+---+---+---+

其中,MAX 函数用于消除重复记录,并返回非空值。通过这种方式,我们可以将原来的多个行转换为单个行,并且每个值都是单独的列。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=4447

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?