ZBLOG

mysql 列转行的方式

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

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

+----+-------+-------+
| id | name  | grade |
+----+-------+-------+
| 1  | Alice | A     |
| 2  | Bob   | B     |
| 3  | Carol | C     |
| 4  | Dave  | A     |
| 5  | Eve   | B     |
+----+-------+-------+

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

SELECT
    name,
    MAX(CASE WHEN grade = 'A' THEN 'Yes' ELSE '' END) AS A,
    MAX(CASE WHEN grade = 'B' THEN 'Yes' ELSE '' END) AS B,
    MAX(CASE WHEN grade = 'C' THEN 'Yes' ELSE '' END) AS C
FROM
    students
GROUP BY
    name;

该查询结果如下:

+-------+---+---+---+
| name  | A | B | C |
+-------+---+---+---+
| Alice | Yes   |       |
| Bob   |       | Yes   |
| Carol |       |       | Yes   |
| Dave  | Yes   |       |
| Eve   |       | Yes   |
+-------+---+---+---+

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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?