【发布时间】:2021-02-17 07:19:32
【问题描述】:
我有一个表格,其中包含如下列:
+-------+------+-------+-------+-------+-------+
| 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
有没有办法做到这一点而不会弄得一团糟?好像我错过了一些非常明显的东西。
【问题讨论】:
-
“有没有办法做到这一点而不造成混乱?”是的,它被称为规范化您的数据。
-
源数据来自 CDC,它以这种不幸的方式聚合成行,我们实际上正在使用与此问题相关的项目对数据进行规范化,感谢您的帮助 (?) 输入。
-
@Belayer 粗鲁的回答。
标签: sql postgresql unpivot lateral-join