Вы можете использовать аналитические функции: 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
(как показано в данных примера).