【问题标题】:select not null values among multiple rows across Multiple columns in oracle在oracle中跨多个列的多行中选择非空值
【发布时间】:2018-06-24 15:06:36
【问题描述】:

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

数据集

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

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

【问题讨论】:

标签: sql oracle group-by duplicates notnull


【解决方案1】:

你可以使用聚合:

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 的所有值压缩为一行。如果有重复,则只保留一个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 2018-05-15
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多