通过转置减少列数

时间:2019-08-01 13:00:50

标签: sql postgresql unpivot

我有一个表格,其中有60列以上。我想减少列数,并且已经有了一个主意。

所以列看起来像这样:

A_yes A_no B_yes B_no C_yes C_no
1     4    3     5    9     2

我想得到的是这个

Category   yes   no
A          1     4
B          3     5
C          9     2

当然,这是极其简化的,但是我可以使用用于此目的的模式来扩展此问题的解决方案。 我正在使用PostgreSQL。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用横向连接:

select v.*
from t cross join lateral
     (values ('A', A_yes, A_no),
             ('B', B_yes, B_no),
             ('C', C_yes, C_no)
     ) v(category, yes, no);