我遇到了类似于下表的问题
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
可能最简单的方法是这样的:
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 具有不同的电话号码,则可能无法获得预期的结果。