PIVOT

最近更新时间:2026-05-20 14:11:22

我的收藏

描述

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')
);

-- 带列别名的 PIVOT
SELECT * 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);