行转列sql
时间: 2023-07-01 07:20:13 浏览: 54
行转列(Pivot)是一种常见的数据转换技术,在 SQL 中可以通过使用聚合函数和 CASE 语句来实现。
假设有以下示例数据表:
```
+-------+------+------+------+
| Name | Year | Q1 | Q2 |
+-------+------+------+------+
| Alice | 2020 | 100 | 200 |
| Alice | 2021 | 150 | 250 |
| Bob | 2020 | 300 | 400 |
| Bob | 2021 | 350 | 450 |
+-------+------+------+------+
```
需要将上述表格中的年份列(Year)转换为列名,即将 Q1 和 Q2 列的值按年份分别转换为列,得到以下结果:
```
+-------+------+------+------+------+
| Name | 2020 | 2021 | Q1 | Q2 |
+-------+------+------+------+------+
| Alice | 100 | 150 | 200 | 250 |
| Bob | 300 | 350 | 400 | 450 |
+-------+------+------+------+------+
```
可以使用如下 SQL 语句来实现:
```
SELECT Name,
MAX(CASE WHEN Year = 2020 THEN Q1 END) AS '2020 Q1',
MAX(CASE WHEN Year = 2021 THEN Q1 END) AS '2021 Q1',
MAX(CASE WHEN Year = 2020 THEN Q2 END) AS '2020 Q2',
MAX(CASE WHEN Year = 2021 THEN Q2 END) AS '2021 Q2'
FROM table_name
GROUP BY Name;
```
上述语句中,使用了 MAX 函数和 CASE 语句将 Q1 和 Q2 列的值按年份转换为列。同时,使用了 GROUP BY 子句将结果按 Name 列进行分组。