合并多行以在BigQuery中获取价值

时间:2020-06-30 15:41:24

标签: null google-bigquery

我遇到与下表类似的问题

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

1 个答案:

答案 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的电话号码不同,那么您可能无法获得预期的结果。