我遇到与下表类似的问题
id phonenumber email name
A0001 123456789 null null
A0001 null abc@xyz.com null
A0001 null null Adam
我想知道是否存在一种将所有行合并为1并将非空行中的值合并为一行的方法 这是我要寻找的结果
id phonenumber email name
A0001 123456789 abc@xyz.com Adam
答案 0 :(得分:1)
最简单的方法可能是这样的:
with data as (
select 'A0001' as id, 123456789 as phonenumber, null as email, null as name union all
select 'A0001', null, 'abc@xyz.com', null union all
select 'A0001', null, null, 'Adam'
)
select id, max(phonenumber) as phonenumber, max(email) as email, max(name) as name
from data
group by 1
例如,如果您的表中有多个行,每个ID的电话号码不同,那么您可能无法获得预期的结果。