在 PostgreSQL 中透视表

Posted

技术标签:

【中文标题】在 PostgreSQL 中透视表【英文标题】:Pivoting a table in PostgreSQL 【发布时间】:2021-04-01 21:29:44 【问题描述】:

数据库新手,我有下表,我需要将列值转换为行,有人可以帮忙。

以下是我已有的源数据:

id              custom_key  custom_value
648079          WrapUpName  Default Wrap-up Code
648079          agentEmail  abc@gmail.com
648079          Location    Hyderabad
648079          Supervisor  Vinay
648079          Publication xyz
648122          WrapUpName  Default Wrap-up
648122          agentEmail  efg@gmail.com
648122          Location    Mumbai
648122          Supervisor  Pranay
648122          Publication mnp

我需要使用 PostgreSQL 查询将上述值转换​​为以下格式。

id              WrapUpName              agentEmail      Location    Supervisor  Publication
648079          Default Wrap-up Code    abc@gmail.com   Hyderabad   Vinay       xyz
648122          Default Wrap-up Code    efg@gmail.com   Mumbai      Pranay      mnp

【问题讨论】:

***.com/… 【参考方案1】:

只使用条件聚合:

select id,
    max(custom_value) filter(where custom_key = 'WrapUpName') as wrap_up_name,
    max(custom_value) filter(where custom_key = 'agentEmail') as agent_email
    ...
from mytable
group by id

【讨论】:

以上是关于在 PostgreSQL 中透视表的主要内容,如果未能解决你的问题,请参考以下文章

在 PostgreSQL 中透视表

在 Postgres 9.6 中创建数据透视表

带有交叉表的 Postgres 数据透视表

使用 Postgres 的数据透视表样式价格矩阵

使用 Redshift (PostgreSQL) 和计数的数据透视表

在 laravel 中使用多对多关系同步:PostgreSQL 数据透视表不更新