假设有以下表格结构的数据:

+----+-------+--------+
| id | name  | amount |
+----+-------+--------+
|  1 | John  |    100 |
|  2 | Mary  |    200 |
|  3 | Peter |    300 |
+----+-------+--------+

我们想要将这个表格转换成如下形式:

+----+------+------+-------+
| id | Jan  | Feb  | March |
+----+------+------+-------+
|  1 |  100 | NULL |  NULL |
|  2 | NULL |  200 |  NULL |
|  3 | NULL | NULL |   300 |
+----+------+------+-------+

可以使用下列 SQL 查询来实现行转列的操作:

SELECT id,
       MAX(CASE WHEN name = 'John' THEN amount END) AS Jan,
       MAX(CASE WHEN name = 'Mary' THEN amount END) AS Feb,
       MAX(CASE WHEN name = 'Peter' THEN amount END) AS March
FROM your_table
GROUP BY id;

这个查询使用了 CASE 语句来根据 name 列的值将 amount 列的值转换成对应的月份列。使用 MAX 函数可以确保每个 id 只有一个对应的值。

请注意,这个示例假设每个 id 只会对应一个 name,即每个 id 的 name 是唯一的。如果有多个相同 id 的 name,则只有最后一个 name 会被用来转换成对应的月份列。

mysql 行转列示例

原文地址: https://www.cveoy.top/t/topic/i66q 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录