mysql 行转列示例
假设有以下表格结构的数据:
+----+-------+--------+
| 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 会被用来转换成对应的月份列。
原文地址: https://www.cveoy.top/t/topic/i66q 著作权归作者所有。请勿转载和采集!