将同一列中的不同类型的值分隔到单独的列中



我有一列包含呼叫每个用户(电子邮件,电话)的不同方式,每种呼叫方式都有单独的行。我想要整合这些信息,这些信息将以用户的同一行邮件和电话呈现给我。我如何在查询中写这个?例如:

来自:

ID  USER    communication       
1   boy 50000148        
2   boy 5405112741      
3   boy boy@gmail.com       

:

ID USER EMAIL         PHONE1    PHONE2
1 boy boy@gmail.com 506770148 542212741
  1. 这是一个将行转换为列的例子,数据应该有phone1,phone2和email作为列通信中的行名。用例将行转换为列(根据您发布的结果图像进行pivot)

第1点和第2点

select user,id,
sum(case when communication='phone1'
then value end) as phone1,
sum(case when communication='phone2'
then value end) as phone2,
max( case when communication='email'
then value end )as email    
from test

输出

最新更新