如何在PostgreSQL中使用union从宽表创建长表?



我有一个广泛的PostgreSQL表,我需要使用联合查询更改为长格式。表是这样的:

lagoon_liner_remedy

将列转换为行的一种简单方法是创建一个包含需要转换的列的数组,然后将其解嵌套以创建行,例如

CREATE TABLE t (id int, a text, b text, c text);
INSERT INTO t VALUES (1,'a1','b1','c1'), (2,'a2','b2','c2');
SELECT id, unnest(array[a,b,c]) FROM t;
id | unnest 
----+--------
1 | a1
1 | b1
1 | c1
2 | a2
2 | b2
2 | c2
(6 rows)

Demo:db<>fiddle

最新更新