我在PostgreSQL中有一个表,如下所示:
--------------------------------------------------------------
Item1 | Item2 | Item3 | Item4 |Value1| Value2| Value3| Value4|
--------------------------------------------------------------
我想要一个显示如下表所示的查询:
ItemHead| ValueHead
---------------
Item1 | Value1|
---------------
Item2 | Value2|
----------------
Item3 | Value3|
----------------
Item4 | Value4|
---------------
答案 0 :(得分:2)
使用单 SELECT
,LATERAL
加入VALUES
表达式。这比多个SELECT
语句更短更快:
SELECT v.*
FROM tbl, LATERAL (
VALUES
(item1, value1)
, (item2, value2) -- data types must be compatible
, (item3, value3)
, (item4, value4)
) v ("ItemHead", "ValueHead"); -- your desired column names
相关:
注意:您添加了标记crosstab。但是来自附加tablefunc
module的Postgres函数crosstab()
用于 pivoting ,而此任务则相反,有时也称为 unpivoting 。相关:
答案 1 :(得分:0)
只需使用UNION ALL
SELECT item1, value1 FROM your_tab
UNION ALL
SELECT item2, value2 FROM your_tab
UNION ALL
SELECT item3, value3 FROM your_tab
UNION ALL
SELECT item4, value4 FROM your_tab