将两个相似的行合并为一个新列

时间:2015-07-18 03:58:46

标签: mysql sql

原始表:

Name         Age      Contact_type   Contact
Alex         20       SMS            12345
Alex         20       Email          abc@gmail.com
Alex         20       SMS            54321
Bob          35       SMS            23456

我想把它作为:

Name          Age     Contact_type1   Contact_1  Contact_type2  Contact_2       Contact_type3 Contact_3
Alex          20           SMS          12345        Email     abc@gmail.com        SMS          23456
Bob           35           SMS          23456

如果姓名和年龄重复,请将2行(或更多行)与新列合并为1行,如上所示。

我想通过找到相同的'Name'和'Age',并使用像case when count distinct(contact)>0这样的DISTINCT CONTACT来做到这一点,但似乎发生了很多语法错误。有没有更智能的方法来制作它?

1 个答案:

答案 0 :(得分:1)

使用conditional Aggregate执行此操作

select Name,Age,
       max(case when Contact = 'SMS' then Contact end) as Contact_1,
       max(case when Contact = 'Email' then Contact end) as Contact_2
from yourtable
group by Name, Age