2014-10-21 4 views
-1

У меня есть таблица базы данных со следующими столбцами: regularization_dt, modified_dt и account_id. Для конкретного случая, когда обновляется учетная запись, запись добавляется в таблицу с новым измененным_для для regularization_dt и account_id.SQL-запрос для удаления дубликатов на основе измененной даты

Я хочу, чтобы SQL-запрос удалял дубликаты регуляризации. Только одна запись для регуляризации должна быть выбрана на основе недавно измененного_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; 
+0

http://stackoverflow.com/questions/18932/how-can-i-remove-duplicate-rows? –

+0

Не могли бы вы просмотреть свои теги. Вы ищете решение для [tag: oracle] или [tag: mysql]? Или решение для перекрестного поставщика? –

ответ

0

Похоже, вы хотите использовать агрегатную функцию и GROUP BY:

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

Это должно вернуть дедуплицированные строки только с последней modified_dt для строк с одинаковым regularization_dt и account_ID значений столбцов.

+0

Что делать, если у меня есть еще один столбец domain_item_id, который также может быть повторен? – Arun

Смежные вопросы