Oracle SQL Remove Duplicates на 2 из 4 полей - PullRequest
0 голосов
/ 17 октября 2018

Я использую Oracle SQL для извлечения данных;

У меня есть периоды поставки для идентификаторов в 2 системах.У меня это работает с кодом ниже:

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

1 Ответ

0 голосов
/ 17 октября 2018

Если вам все равно, какую из них возвратить, то эту функцию выполняет одна из агрегатных функций (например, MIN или MAX).Например:

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;   
...