首页 > 解决方案 > Oracle 重复数据删除

问题描述

我有以下数据:

ID    ID2      DATE
 A     AA    2017-01-01
 A     BB    2017-01-01
 A     CC    2017-01-01
 B     DD    2018-01-01
 B     DD    2018-01-01
 C     EE    2018-02-01

我想通过 ID 进行重复数据删除,每行只保留一个 ID2 和一个日期。我正在尝试这个 sql 命令,但它不会重复数据删除:

SELECT DISTINCT A.ID, A.ID2, A.DATE  
FROM TABLE A
GROUP BY A.ID; 

任何帮助将不胜感激。

标签: sqloracleduplicates

解决方案


看起来你并不关心你想要保留哪个ID2DATUM(因为你不能命名一个列“ ”;它是为数据类型保留的),一个简单的选择是DATE

SQL> with test (id, id2, datum) as
  2    (select 'a', 'aa', date '2017-01-01' from dual union all
  3     select 'a', 'bb', date '2017-01-01' from dual union all
  4     select 'a', 'cc', date '2017-01-01' from dual union all
  5     select 'b', 'dd', date '2018-01-01' from dual union all
  6     select 'b', 'dd', date '2018-01-01' from dual union all
  7     select 'c', 'ee', date '2018-02-01' from dual
  8    )
  9  select id, min(id2) id2, min(datum) datum
 10  from test
 11  group by id;

ID  ID2 DATUM
--- --- ----------
a   aa  2017-01-01
b   dd  2018-01-01
c   ee  2018-02-01

SQL>

推荐阅读