如何使用 Postgresql 将数据重塑为更长的格式?

问题描述 投票:0回答:1

我正在使用 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

谢谢!

sql postgresql
1个回答
0
投票

由于从列到行是安全的,我会将数据翻转为 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;

工作小提琴

© www.soinside.com 2019 - 2024. All rights reserved.