首页
学习
活动
专区
圈层
工具
发布

如何使用mysql查询转置mysql表数据?

在MySQL中,可以使用CASE语句和GROUP_CONCAT函数将行数据转换为列数据

假设有一个名为sales_data的表,结构如下:

代码语言:javascript
复制
+----------+--------+-------+
| year     | product | sales |
+----------+--------+-------+
| 2020     | A      | 100   |
| 2020     | B      | 200   |
| 2021     | A      | 150   |
| 2021     | B      | 250   |
+----------+--------+-------+

您希望将上述表转换为以下格式:

代码语言:javascript
复制
+----------+------+------+------+------+------+
| year     | A    | B    | C    | ...  | N    |
+----------+------+------+------+------+------+
| 2020     | 100  | 200  | 0    | ...  | 0    |
| 2021     | 150  | 250  | 0    | ...  | 0    |
+----------+------+------+------+------+------+

可以使用以下SQL查询实现这个需求:

代码语言:javascript
复制
SELECT year,
       SUM(IF(product = 'A', sales, 0)) AS A,
       SUM(IF(product = 'B', sales, 0)) AS B
FROM sales_data
GROUP BY year;

这个查询使用IF函数来检查product列的值,如果值为'A',则将sales列的值累加到'A'列,否则累加0。同理,对于'B'列也是如此。最后,使用GROUP BY子句按年份分组。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券