【问题标题】:How to pivot a table in postgresql?如何在 postgresql 中旋转表?
【发布时间】:2020-07-14 14:50:44
【问题描述】:

事情是这样的,我有这张桌子:

id    rank    price
1     1       100
1     2       200
2     1       300
2     2       100
2     3       200
3     1       300

我想构建这样的东西:

id    price_rank_1    price_rank_2    price_rank_3
1     100             200             NULL
2     300             100             200
3     300             NULL            NULL

这应该很简单,只是某种情况,Idk,但我想不通。

更新:我尝试了How to convert row into column in PostgreSQL of below table的答案:

select id,
       price filter (where rank=1) as price_rank_1,
       price filter (where rank=2) as price_rank_2,
       price filter (where rank=3) as price_rank_3,
from table

但我得到了错误:

Invalid operation: syntax error at or near "(" 

【问题讨论】:

  • @MikeOrganek 非常感谢,我认为问题在于我不知道要搜索什么。我应该删除我的问题吗?
  • 是的,请。如果没有,有人可能会将其标记为重复项并将其关闭。
  • @MikeOrganek 奇怪的事情,帖子的答案不起作用。我会更新我的问题,以便您或其他人可以看到
  • 你的 Postgres 版本是什么? select version();会告诉你

标签: postgresql pivot pivot-table case-when


【解决方案1】:

filter 表达式必须在聚合函数上:

select id, 
       max(price) filter (where rank = 1) as price_rank_1,
       max(price) filter (where rank = 2) as price_rank_2,
       max(price) filter (where rank = 3) as price_rank_3
  from your_table 
 group by id;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    • 2019-01-29
    • 2020-03-24
    • 1970-01-01
    • 2021-07-23
    相关资源
    最近更新 更多