【问题标题】:Oracle SQL Remove Duplicates on 2 of 4 fieldsOracle SQL 删除 4 个字段中 2 个的重复项
【发布时间】:2019-03-22 03:29:52
【问题描述】:

我正在使用 Oracle SQL 来提取数据;

我有 2 个系统中的 ID 的供应期。我有这个使用下面的代码:

select distinct b.ID_Code, b.supply_start_date, b.supply_end_date, b.system_id
from (
 select ID_Code, max(supply_start_date) as max_dt 
 from tmp_mmt_sup 
 group by ID_Code) a
inner join tmp_mmt_sup b
on a.ID_Code=b.ID_Code and a.max_dt=b.SUPPLY_START_DATE;

但是,我有几条记录在 2 个不同的系统上,但开始日期/结束日期相同。我只想保留其中一个 - 不在乎哪个!

所以不是

ID_Code    Start        End          System
123        01-04-2018   30-04-2018   ABC
123        01-04-2018   30-04-2018   DEF

我只有这些记录之一。

非常感谢 D

【问题讨论】:

    标签: sql oracle duplicates


    【解决方案1】:

    如果您不关心返回哪一个,那么聚合函数之一(例如MINMAX)就可以完成这项工作。例如:

    select b.id_code, 
           b.supply_start_date, 
           b.supply_end_date, 
           max(b.system_id) system_id    --> added MAX here ...
    from (select id_code, 
                 max(supply_start_date) as max_dt 
          from tmp_mmt_sup 
          group by id_code
         ) a
    inner join tmp_mmt_sup b 
      on a.id_code = b.id_code and a.max_dt = b.supply_start_date
    group by b.id_code,                  --> ... and GROUP BY here
             b.supply_start_date, 
             b.supply_end_date;   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 2012-02-24
      • 2020-02-12
      • 1970-01-01
      • 2021-11-08
      相关资源
      最近更新 更多