我有一个表,它在一列中存储不同的值。column_a
: namecolumn_b
: contact_type - email或电话column_c
: contact_value -确切的电子邮件地址或电话号码
如果一个人同时拥有email和电话,则有两行。
我试图得到一个选择,将不同的值分布到各自的列:column_a
: namecolumn_b
: email_valuecolumn_c
: phone_value
一个人应该正好有一行。
到目前为止,我所有的尝试都结束了一个人有两行-电子邮件地址和电话为空,反之亦然…
是否有一种方法如何将两个值分配到两个各自的列中,并且每个人只有一个记录?
希望这不是一个太令人困惑的问题…
您可以使用条件聚合:
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;