如何将不同类型的值从一列分配到各个列
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;
我有一个 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;