通过转置减少列数

Reducing number of columns by transposing

我有一个 table,它有超过 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。

提前致谢!

您可以使用横向连接:

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);