在MySQL中将行数据转换为列
我有一个MySQL表,它以这种格式存储数据在MySQL中将行数据转换为列,mysql,Mysql,我有一个MySQL表,它以这种格式存储数据 Type|Month|Count ----+-----+------- 1 |9 |4 3 |9 |7 99 |9 |2 1 |10 |6 3 |10 |7 99 |10 |9 ....... 类型列可以包含3个值1、3、99中的任意一个。 月份将保存从1到12的值。 计数可以是任意的 我想要的输出是这样的: Month|Type1|Type3|Type99 -----+-----+-----+---
Type|Month|Count
----+-----+-------
1 |9 |4
3 |9 |7
99 |9 |2
1 |10 |6
3 |10 |7
99 |10 |9
.......
类型列可以包含3个值1、3、99中的任意一个。
月份将保存从1到12的值。
计数可以是任意的
我想要的输出是这样的:
Month|Type1|Type3|Type99
-----+-----+-----+-------
9 |4 |7 |2
10 |6 |7 |9
................
我看到了这个演示,但不能从中理解太多
这是一个带有演示数据的示例
感谢您的帮助。尝试下面的查询,您需要的是MYSQL pivot,下面的查询解决了您的问题 静态方式
SELECT Month,
SUM(CASE WHEN Type = 1 THEN 'count' ELSE 0 END) AS Type1,
SUM(CASE WHEN Type = 3 THEN 'count' ELSE 0 END) AS Type3,
SUM(CASE WHEN Type = 99 THEN 'count' ELSE 0 END) AS Type99
FROM my_table
GROUP BY Month
动态方式
SELECT Month,
SUM(CASE WHEN Type = 1 THEN 'count' ELSE 0 END) AS Type1,
SUM(CASE WHEN Type = 3 THEN 'count' ELSE 0 END) AS Type3,
SUM(CASE WHEN Type = 99 THEN 'count' ELSE 0 END) AS Type99
FROM my_table
GROUP BY Month
配合使用
至少创建一个摆弄示例数据的链接。添加了摆弄示例的链接data@Nilesh巴拉伊,这有用吗?它不起作用。它显示type3和type99列的值0这是我需要的。简单而优雅@米海:你不是唯一一个知道mysql的人,请参考@Mihai:我是根据自己的概念做复制粘贴的,参考那个链接。