更新时间:2025-05-29 GMT+08:00

Unpivot

算子说明

转置算子。用于将行转换为列。这个操作可以将一张表中的多列数据转换为两列,其中一列是原始表中的列名,另一列是对应的值。

典型场景

查询使用unpivot转置的表。

示例

示例:查询使用unpivot转置的表。

--数据准备。 
gaussdb=# CREATE TABLE t1 (id int, number int, grade int);
CREATE TABLE
gaussdb=# INSERT INTO t1 VALUES(generate_series(1,100), 1, 2);
INSERT 0 100

--执行结果。 
gaussdb=# EXPLAIN SELECT *  FROM t1 UNPIVOT (v1 FOR v2 in (id,number,grade));
                                      QUERY PLAN                                      
--------------------------------------------------------------------------------------
 Subquery Scan on __unnamed_unpivot_subquery__  (cost=0.00..87.80 rows=5806 width=36)
   Filter: (__unnamed_unpivot_subquery__.v1 IS NOT NULL)
   ->  Unpivot  (cost=0.00..29.45 rows=5835 width=36)
         ->  Seq Scan on t1  (cost=0.00..29.45 rows=1945 width=12)
(4 rows) 

--删除。
gaussdb=# DROP TABLE t1;

上述示例中,Unpivot算子输出信息如下所示。

信息名称

含义

Unpivot

算子的名称。

Seq Scan

算子的名称。