我有一张桌子:
Table_Name: price_list --------------------------------------------------- | id | price_type_a | price_type_b | price_type_c | --------------------------------------------------- | 1 | 1234 | 5678 | 9012 | | 2 | 3456 | 7890 | 1234 | | 3 | 5678 | 9012 | 3456 | ---------------------------------------------------
我需要在Postgres中进行选择查询,其结果如下:
--------------------------- | id | price_type | price | --------------------------- | 1 | type_a | 1234 | | 1 | type_b | 5678 | | 1 | type_c | 9012 | | 2 | type_a | 3456 | | 2 | type_b | 7890 | | 2 | type_c | 1234 | ...
任何对链接到类似示例的帮助都将不胜感激。
单SELECT用LATERAL加入一个VALUES表达这项工作:
SELECT
LATERAL
VALUES
SELECT p.id, v.* FROM price_list p , LATERAL ( VALUES ('type_a', p.price_type_a) , ('type_b', p.price_type_b) , ('type_c', p.price_type_c) ) v (price_type, price);