postgresql 列值作为Postgres中的行

pgky5nke  于 2022-12-03  发布在  PostgreSQL
关注(0)|答案(1)|浏览(191)

我有一个名为price的表,它包含Item、Price_01、Price_02、Price_03、Price_04等列,表数据如下所示。

Item , Price_01, Price_02, Price_03, Price_04
Bat  , 1000 , 1100, 1200 , 1300
Ball  , 11000 , 1200, 1300 , 1400

我的要求是,我希望将Price列数据作为给定输入Item的行。例如,Item输入为Bat,则输出应为

1000
1100
1200
1300

我怎样才能在Postgres中做到这一点?在Postgres中PIVOT有什么替代方法吗

gajydyqb

gajydyqb1#

这是一个UNPIVOT,而不是PIVOT,它可以在Postgres中使用VALUES子句来完成:

select p.item, 
       v.price
from price p
  cross join lateral (
     values (p.price_01), (p.price_02), (p.price_03), (p.price_04) 
  ) as v(price)
where p.item = 'Bat'

相关问题