在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 -----+-----+-----+---

我有一个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
-----+-----+-----+-------
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:我是根据自己的概念做复制粘贴的,参考那个链接。