digoal
2024-05-03
PostgreSQL , PolarDB , DuckDB , unpivot , 行列转换 , 统计 , internals
unpivot 用法参考如下, 本文主要演示DuckDB内部如何转换unpivot结果? 帮助更好的理解unpivot.
手册:
更多相关参考:
- 《DuckDB unpivot 行列转换 太好用了》
- 《DuckDB pivot 行列转换 太好用了》
- 《DuckDB pivot 行列转换 internals》
- 《DuckDB 语法糖: Dynamic PIVOT and UNPIVOT 动态行列转换》
- 《DuckDB select 语法糖: exclude, replace columns》
- 《DuckDB 语法糖: Dynamic column selection 支持通配符,exclude,replace,lambda 等动态列选择|值替换|列选择》
unpivot 语法 sql:
UNPIVOT monthly_sales
ON jan, feb, mar, apr, may, jun
INTO
NAME month
VALUE sales;
自动转换为如下sql:
SELECT
empid,
dept,
unnest(['jan', 'feb', 'mar', 'apr', 'may', 'jun']) AS month, -- 单引号表示 取 单引号内字符串 的值
unnest(["jan", "feb", "mar", "apr", "may", "jun"]) AS sales -- 双引号表示 取 双引号内字段名 对应的值
FROM monthly_sales;