在oracle

时间:2018-01-15 23:45:12

标签: sql oracle group-by duplicates notnull

是否有办法从一组重复项中的多个字段中选择非空值并作为单行返回。例如,如果我们有一个如下所示的样本数据集

数据集

enter image description here

正如您在上面简化的oracle sql数据集中所看到的,对于每个电子邮件地址,有多个记录,其中包含sign_up_page,last_sign_up_page,supplimental_data,last_sign_up_timestamp,last_sign_up_widget的空值。但是对于特定的电子邮件地址,所有这些列数据只有一个非空值。

是否可以通过选择相应列数据的非空值来为每个email_address(分组电子邮件地址)检索单个记录。任何帮助将不胜感激。谢谢。所需的样本输出数据集示例图像: enter image description here

1 个答案:

答案 0 :(得分:0)

您可以使用聚合:

select email_address, first_name,
       max(sign_up_page) as sign_up_page,
       max(last_sign_up_page) as last_sign_up_page,
       . . .
from t
group by email_address, first_name;

注意:这会将所有值压缩为每email_address / first_name一行。如果有重复项,则只保留一个。