Аналитика изменения параметров oracle sql

Подскажите как лучше реализовать запрос. Дана таблица на большое число строк:

Article Par1 Editor Date
Apple kg Ivanov 26.01.01 12:20
Apple mg Sidorov 25.01.01 13:01
Apple mg Sidorov 25.01.01 12:01
Apple ton Ivanov 24.01.01 11:01

Суть таблицы вывод изменений параметра одного из артикулов, кто его сделал, и дата операции. Бывают строки (как у Sidorov), где был изменен другой параметр, может быть несколько одинаковых строк за разной датой. (У артикулов параметров много но контролировать нужно только один)

Мне нужно вывести только тех кто изменял этот параметр. То есть из прошлой таблицы нужно получить следующую:

Article Par1 Editor Date
Apple kg Ivanov 26.01.01 12:20
Apple mg Sidorov 25.01.01 12:01

Я попробовал использовать LAG (Article,1) over (order by Article) Через Case получив 0 где не было изменений и 1 где было изменение. Но отсортировать и оставить только одного Sidorov не получается.. Что тут можно придумать?


Ответы (2 шт):

Автор решения: ESkri

Надо использовать LAG, как ты и хотел

select     
    Article, Par1, Editor, Date_
from
    (    
    select 
        Article, Par1, Editor, Date_, 
        case when Par1 <> lag (Par1) over (partition by Article order by Date_) then 1 end is_modified
    from     
        t
    )
where
    is_modified = 1         
order by 
    Date_ desc
→ Ссылка
Автор решения: Mik
select * from(
    select Article, Par1, Editor, Date_, nvl(lag (Par1,1) over (order by Date_),0) as prev
    from
        (select Article, nvl(Par1,'null') as Par1, Date_, Editor from T)
        order by dzupd desc)
where Par1 <> prev

This code work for my task.

→ Ссылка