在 Athena 中,可以使用 UNPIVOT 函数将行转换为列。以下是一个示例:
假设有一个名为 example_table 的表,包含以下数据:
| id | name | score1 | score2 | score3 |
|---|---|---|---|---|
| 1 | Alice | 85 | 90 | 95 |
| 2 | Bob | 75 | 80 | 85 |
| 3 | John | 80 | 85 | 90 |
我们想要将每个学生的分数转换为单独的行,可以按照以下步骤进行:
UNPIVOT 函数将行转换为列:CREATE OR REPLACE VIEW transformed_table AS
SELECT id, name, 'score1' AS score_type, score1 AS score FROM example_table
UNION ALL
SELECT id, name, 'score2' AS score_type, score2 AS score FROM example_table
UNION ALL
SELECT id, name, 'score3' AS score_type, score3 AS score FROM example_table;
SELECT * FROM transformed_table;
查询结果如下:
| id | name | score_type | score |
|---|---|---|---|
| 1 | Alice | score1 | 85 |
| 1 | Alice | score2 | 90 |
| 1 | Alice | score3 | 95 |
| 2 | Bob | score1 | 75 |
| 2 | Bob | score2 | 80 |
| 2 | Bob | score3 | 85 |
| 3 | John | score1 | 80 |
| 3 | John | score2 | 85 |
| 3 | John | score3 | 90 |
上述代码将每个学生的分数从列中提取出来,并将其转换为单独的行,其中 score_type 列指示了分数的类型。