描述
PIVOT 子句用于数据透视,可以根据特定列值获取聚合值,将行转换为列。语法
PIVOT ( { aggregate_expression [ AS aggregate_expression_alias ] } [ , ... ]FOR column_list IN ( expression_list ) )
参数
子句/关键字 | 说明 |
aggregate_expression_alias | 聚合表达式的别名 |
column_list | 列表包含 FROM 子句中的列,指定要被替换为新列的原始列,可使用括号包裹列,如 (c1, c2) |
expression_list | 指定新列,这些列将匹配列列表中的值作为聚合条件,可为新列添加别名 |
示例
-- 基本用法: 将行转为列SELECT * FROM pivot_sales PIVOT (SUM(amount) FOR month IN ('Jan','Feb'));-- 带列别名的 PIVOTSELECT * FROM (SELECT product, month, amount FROM pivot_sales) p PIVOT (MAX(amount) FOR month IN ('Jan' AS jan_amt, 'Feb' AS feb_amt));
测试数据:
CREATE EXTERNAL TABLE pivot_sales (product STRING, month STRING, amount INT)USING PARQUET LOCATION 'cosn://<your_cos_bucket>/<your_file_path>';INSERT INTO pivot_sales VALUES ('A','Jan',100),('A','Feb',200),('B','Jan',150),('B','Feb',250);