case when 行转列
时间: 2023-06-30 18:15:38 浏览: 83
在 SQL 中,可以使用 PIVOT 操作将行转列。而 CASE WHEN 则可以用于对数据进行条件判断和分组,通常用于在 SELECT 语句中生成新的列。因此,可以将 CASE WHEN 结合 PIVOT 使用实现行转列的效果。
例如,假设有如下的表格:
| Name | Type | Value |
|------|-------|-------|
| A | Type1 | 10 |
| A | Type2 | 20 |
| A | Type3 | 30 |
| B | Type1 | 40 |
| B | Type2 | 50 |
| B | Type3 | 60 |
可以使用如下的 SQL 语句将 Type 列转换为列名,同时保留对应的 Value 值:
```
SELECT Name,
MAX(CASE WHEN Type = 'Type1' THEN Value ELSE NULL END) AS Type1,
MAX(CASE WHEN Type = 'Type2' THEN Value ELSE NULL END) AS Type2,
MAX(CASE WHEN Type = 'Type3' THEN Value ELSE NULL END) AS Type3
FROM table_name
GROUP BY Name;
```
执行该语句后,结果如下:
| Name | Type1 | Type2 | Type3 |
|------|-------|-------|-------|
| A | 10 | 20 | 30 |
| B | 40 | 50 | 60 |
其中,MAX 函数用于确保每个 Name 只有一行数据,而 CASE WHEN 则用于将 Type 分别对应到不同的列中。
阅读全文