2016-04-10 3 views
1

Что такое эффективный способ удаления последовательной строки с повторяющимися значениями в определенных полях в улье? например:удалить последовательные строки в улье

Вход:

ID field1 field2 date 
1 a  b  2015-01-01 
1 a  b  2015-01-02 
2 e  d  2015-01-03 

выход:

ID field1 field2 date 
1 a  b  2015-01-01 
2 e  d  2015-01-03 

Заранее спасибо

ответ

2

Один из способов удаления последовательных дубликатов является использование lag проверить предыдущий id и только сохранить строки, где предыдущие id различны:

select * from (
    select * , 
     lag(id) over (order by date) previous_id 
    from mytable 
) t where t.previous_id <> t.id 
or t.previous_id is null -- accounts for the 1st row 

Если вам также необходимо проверить field1 и field2, то вы можете добавить отдельные lag заявления для каждого поля:

select * from (
    select * , 
     lag(id) over (order by date) previous_id, 
     lag(field1) over (order by date) previous_field1 
    from mytable 
) t where (t.previous_id <> t.id and t.previous_field1 <> field1) 
or t.previous_id is null 
+0

Большое спасибо метод @Fuzzy Tree..this работает .. :) – user2895589

+0

@ user2895589 рад, что это помогло – FuzzyTree

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