原始表:
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来做到这一点,但似乎发生了很多语法错误。有没有更智能的方法来制作它?
答案 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