查询以列格式获取多行数据 - postgresql
query to fetch multiple row data in Columns format - postgresql
我有这样的 table 结构:Table - contact_details
role email userId
Primary Contact a1@b.com 1
Secondary Contact b1@b.com 1
End User c1@b.com 1
Primary Contact a2@b.com 2
Secondary Contact b2@b.com 2
结果数据应该是:
Primary Contact Secondary Contact End User UserId
a1@b.com b1@b.com c1@b.com 1
a2@b.com b2@b.com null 2
我无法将用户 ID -2 的最终用户检索为“null”,发生的情况是,如果所有三个角色都存在数据,则整行出现,或者如果任何角色丢失,则整行丢失。
谁能推荐一下方法吗?
-- Postgres 版本 - 12
你可以试试这个(条件聚合)
select
max(case when role = 'Primary Contact' then email else null end) as PrimaryContact,
max(case when role = 'Secondary Contact' then email else null end) as SecondaryContact,
max(case when role = 'End User' then email else null end) as EndUser,
userId
from contact_details
group by userId
我有这样的 table 结构:Table - contact_details
role email userId
Primary Contact a1@b.com 1
Secondary Contact b1@b.com 1
End User c1@b.com 1
Primary Contact a2@b.com 2
Secondary Contact b2@b.com 2
结果数据应该是:
Primary Contact Secondary Contact End User UserId
a1@b.com b1@b.com c1@b.com 1
a2@b.com b2@b.com null 2
我无法将用户 ID -2 的最终用户检索为“null”,发生的情况是,如果所有三个角色都存在数据,则整行出现,或者如果任何角色丢失,则整行丢失。
谁能推荐一下方法吗?
-- Postgres 版本 - 12
你可以试试这个(条件聚合)
select
max(case when role = 'Primary Contact' then email else null end) as PrimaryContact,
max(case when role = 'Secondary Contact' then email else null end) as SecondaryContact,
max(case when role = 'End User' then email else null end) as EndUser,
userId
from contact_details
group by userId