更新时间:2025-03-13 GMT+08:00
Unpivot
算子说明
转置算子。用于将行转换为列。这个操作可以将一张表中的多列数据转换为两列,其中一列是原始表中的列名,另一列是对应的值。
典型场景
查询使用unpivot转置的表。
示例
示例:查询使用unpivot转置的表。
--UNPIVOT语法只能在O兼容库中使用 gaussdb=# CREATE DATABASE ora_test WITH DBCOMPATIBILITY = 'ORA'; gaussdb=# \c ora_test gaussdb=# SET enable_fast_query_shipping=off; --数据准备。 ora_test=# DROP TABLE IF EXISTS t1; ora_test=# CREATE TABLE t1 (id int, number int, grade int); CREATE TABLE ora_test=# INSERT INTO t1 VALUES(generate_series(1,100), 1, 2); INSERT 0 100 --执行结果。 ora_test=# EXPLAIN SELECT * FROM t1 UNPIVOT (v1 FOR v2 in (id,number,grade)); oracle QUERY PLAN ------------------------------------------------------------------------------------------ Streaming (type: GATHER) (cost=1.88..16.24 rows=60 width=36) Node/s: All datanodes -> Subquery Scan on __unnamed_unpivot_subquery__ (cost=0.00..13.43 rows=60 width=36) Filter: (__unnamed_unpivot_subquery__.v1 IS NOT NULL) -> Unpivot (cost=0.00..13.13 rows=60 width=36) -> Seq Scan on t1 (cost=0.00..13.13 rows=20 width=12) (6 rows) --删除。 ora_test=# DROP TABLE t1; ora_test=# \c gaussdb gaussdb=# DROP DATABASE ora_test;
父主题: 运算符