Сравнение двух последовательных строк в oracle из одной таблицы - PullRequest
0 голосов
/ 06 февраля 2020

Сравнение двух последовательных строк в oracle с первым изменением даты из той же таблицы. В приведенной ниже таблице должны возвращаться строки 5 и 6, 8 и 9

[1]: https://i.stack.imgur.com/6F6WN.png

1 Ответ

1 голос
/ 06 февраля 2020

Вы можете использовать аналитические функции: lag() (соответственно lead()) позволяет вам получить значение date в предыдущей строке (Res. Следующая строка), которое затем можно сравнить со значением в текущей строка во внешнем запросе:

select pk, name, date
from (
    select 
        t.*, 
        lag(date)  over(order by pk) lag_date,
        lead(date) over(order by pk) lead_date  
    from mytable t
) t
where lag_date <> date or lead_date <> date

Примечание. Предполагается, что для упорядочения записей можно использовать столбец pk (как показано в данных примера).

...