SQL查询根据修改日期删除重复项

时间:2014-10-21 15:30:26

标签: sql database oracle

我有一个数据库表,其中包含以下列:regularization_dt,modified_dt和account_id。对于特定帐户更新时的特定情况,会在表格中添加一个条目,其中包含regularrization_dt和account_id的新modified_dt。

我想要一个SQL查询来删除正则化的重复项。应根据最近的modified_dt选择一个正则化条目。

例如,表格中的条目如下:

regularization_dt | account_id | modified_dt
----------------- | ---------- | ----------
03-28-2013        |  123       |05-26-2014
03-28-2013        |  123       |01-14-2014
05-26-2014        |  123       |05-25-2014

生成的查询应该产生:

regularization_dt | account_id | modified_dt
----------------- | ---------- | ----------
03-28-2013        |  123       |05-26-2014    
05-26-2014        |  123       |05-25-2014

如何根据不同的列删除列的重复项?

select * from history where account_id = 123;

1 个答案:

答案 0 :(得分:0)

听起来您想要使用聚合函数和GROUP BY

SELECT   regularization_dt,
         account_id,
         MAX(modified_dt) as modified_dt
FROM     yourtable
GROUP BY regularization_dt,
         account_id;

对于具有相同的regularization_dt和account_id列值的行,这应返回仅包含最新modified_dt的重复数据删除行。