查询交叉表视图
Query for crosstab view
我在 PostgreSQL 中有一个 table,如下所示:
--------------------------------------------------------------
Item1 | Item2 | Item3 | Item4 |Value1| Value2| Value3| Value4|
--------------------------------------------------------------
我想要一个查询来显示这个 table,如下所示:
ItemHead| ValueHead
---------------
Item1 | Value1|
---------------
Item2 | Value2|
----------------
Item3 | Value3|
----------------
Item4 | Value4|
---------------
只需使用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
使用 single 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
相关:
- Convert one row into multiple rows with fewer columns
- SELECT DISTINCT on multiple columns
注意:您添加的标签 crosstab. But the Postgres function crosstab()
from the additional tablefunc
module 用于 pivoting,而此任务则相反,有时称为 unpivoting。相关:
- PostgreSQL Crosstab Query
我在 PostgreSQL 中有一个 table,如下所示:
--------------------------------------------------------------
Item1 | Item2 | Item3 | Item4 |Value1| Value2| Value3| Value4|
--------------------------------------------------------------
我想要一个查询来显示这个 table,如下所示:
ItemHead| ValueHead
---------------
Item1 | Value1|
---------------
Item2 | Value2|
----------------
Item3 | Value3|
----------------
Item4 | Value4|
---------------
只需使用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
使用 single 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
相关:
- Convert one row into multiple rows with fewer columns
- SELECT DISTINCT on multiple columns
注意:您添加的标签 crosstab. But the Postgres function crosstab()
from the additional tablefunc
module 用于 pivoting,而此任务则相反,有时称为 unpivoting。相关:
- PostgreSQL Crosstab Query