Функция LEAD - Oracle

У меня есть дата начала и дата окончания, которые я хотел бы сравнить:

пример:

  1. start_date: 2017-12-13 00:00:00    End_date: 2017-12-13 09:44:00
  2. start_date: 2017-12-13 09:44:00    End_date: 2017-12-13 16:19:00
  3. start_Date: 2017-12-13 16:19:00    End_date: 2017-12-18 00:00:00

Я хотел бы сравнить строку start_date 2 со строкой end_date 1. Если они не совпадают, сделайте что-нибудь. Приведенная ниже функция лида не дает мне того, что я хочу. Пожалуйста, присоединяйтесь и помогите. Как только мой запрос заработает, я помещаю его в цикл и просматриваю всю таблицу. Благодарность

    SELECT start_Date, end_date,
      LEAD (start_Date, 1) OVER (ORDER BY start_Date) AS next_start_DAte
      from    my_table
      where   start_date >= '2017-12-01' 
      AND     END_DATE < '2018-08-01'
      AND     FILE_ID IS NULL
      ORDER BY UNIT_ID, START_DATE;

Ну какой делать ты хочешь? Желаемые результаты действительно помогут.

Gordon Linoff 09.08.2018 23:42
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
356
2

Ответы 2

Вы можете просто использовать not exists для поиска строк, которые не совпадают в точности со «следующей» строкой:

select t.*
from my_table t
where not exists (select 1
                  from my_table t2
                  where t2.start_date = t.end_date
                 );

Это всегда будет возвращать последнюю строку таблицы, но эта строка соответствует описанным вами условиям.

Вы можете использовать этот следующий запрос,

SELECT START_DATE ,END_DATE, 
--If they dont match do something. 
case when  trunc(next_date) <> trunc(end_date) then 1 else 2 end dosomething 
FROM (
SELECT leadtest.*, lead(start_date, 1) over (order  by start_date) next_date FROM leadtest)
;

Надеюсь это поможет!

Другие вопросы по теме