我正在使用 Postgresql 数据库,其中数据的形状如下:
A_a | B_a | A_b | B_b |
---|---|---|---|
4 | 3 | 4 | 5 |
2 | 5 | 3 | 1 |
我如何重塑或旋转它,使其成为如下所示的较长格式?
大写 | 小写 | 价值 |
---|---|---|
A | a | 4 |
A | a | 2 |
B | a | 3 |
B | a | 5 |
A | b | 4 |
A | b | 3 |
B | b | 5 |
B | b | 1 |
谢谢!
由于从列到行是安全的,我会将数据翻转为 JSON,然后将其拉回,如下所示:
with pivot as (
select e.*
from shape1
cross join lateral jsonb_each_text(to_jsonb(shape1)) as e(k,v)
)
select left(k, 1) as upper_case, right(k, 1) as lower_case, v as value
from pivot
order by lower_case, upper_case;