如何将不同类型的值从一列分配到各个列

How to distribute different types of values from one column into individual columns

我有一个 table 在一列中存储不同的值。 可以说结构是这样的:
column_a: 姓名
column_b: contact_type - 电子邮件或 phone
column_c: contact_value - 确切的电子邮件地址或 phone 号码
一个人应该同时拥有email和phone,有两行。

我试图获得一个 select 将不同的值分配到相应的列中:
column_a: 姓名
column_b: email_value
column_c: phone_value
一个人应该正好排成一排。

到目前为止,我所有的尝试都结束了一个人有两行 - 电子邮件地址和 phone 为空,反之亦然...

有没有办法将这两个值分配到两个相应的列中,并且每个人只有一个记录?

希望这个问题不会太混乱...

您可以使用条件聚合:

select column_a,
       max(case when column_b = 'phone' then column_c end) as phone,
       max(case when column_b = 'email' then column_c end) as email
from t
group by column_a;