[英]Postgres, split single row into multiple rows
我有一個包含如下列的表:
+-------+------+-------+-------+-------+-------+
| age1 | val1 | age2 | val2 | age3 | val3 |
+-------+------+-------+-------+-------+-------+
| 30-40 | 34.5 | 41-50 | 32.01 | 51-60 | 29.13 |
+-------+------+-------+-------+-------+-------+
我要回:
+-------+-------+
| age | val |
+-------+-------+
| 30-40 | 34.5 |
| 41-50 | 32.01 |
| 51-60 | 29.13 |
+-------+-------+
我最終使用 3 個這樣的聯合編寫了一個大型查詢,但這似乎不對:
select *
from ( ... ) g1
union
select *
from ( ... ) g2
union
select *
from ( ... ) g3
有沒有辦法在沒有混亂的情況下做到這一點? 似乎我錯過了一些非常明顯的東西。
在 Postgres 中,您可以使用橫向連接有效地將列反旋轉為行:
select x.*
from mytable as t
cross join lateral (values
(t.age1, t.val1),
(t.age2, t.val2),
(t.age3, t.val3)
) as x(age, val)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.