impala将某一行数据转为列
时间: 2023-09-10 10:05:04 浏览: 320
Impala可以使用PIVOT函数将行数据转换为列。假设有以下原始数据表:
```
+----+---------+-------+
| id | name | score |
+----+---------+-------+
| 1 | Alice | 80 |
| 2 | Bob | 90 |
| 3 | Charlie | 85 |
+----+---------+-------+
```
要将score列转换为列,可以使用以下查询:
```
SELECT *
FROM (
SELECT name, score
FROM my_table
) t
PIVOT (
AVG(score)
FOR name IN ('Alice', 'Bob', 'Charlie')
) p;
```
这将生成以下结果:
```
+--------+-------+-------+---------+
| Alice | Bob |Charlie| id |
+--------+-------+-------+---------+
| 80 | 90 | 85 | 1 |
| NULL | NULL | NULL | 2 |
| NULL | NULL | NULL | 3 |
+--------+-------+-------+---------+
```
注意,PIVOT函数需要指定列名列表。如果你不知道列名列表,可以使用动态SQL生成列名列表。
阅读全文