У меня есть таблица с именем x. Данные следующие.Определить смежные и прерывистые диапазоны дат
Acccount_num start_dt end_dt
A111326 02/01/2016 02/11/2016
A111326 02/12/2016 03/05/2016
A111326 03/02/2016 03/16/2016
A111331 02/28/2016 02/29/2016
A111331 02/29/2016 03/29/2016
A999999 08/25/2015 08/25/2015
A999999 12/19/2015 12/22/2015
A222222 11/06/2015 11/10/2015
A222222 05/16/2016 05/17/2016
Оба A111326 и A111331 должны быть определены как непрерывные данные и A999999 и
A222222 должен быть идентифицирован как разрывной data.In моего кода, который я в настоящее время использовать следующий запрос для выявления разрывных данных. A111326 также ошибочно идентифицируется как прерывистые данные. Пожалуйста, помогите изменить приведенный ниже код, чтобы A111326 не был идентифицирован как прерывистые данные. Спасибо за вашу помощь.
(SELECT account_num
FROM (SELECT account_num,
(MAX (
END_DT)
OVER (PARTITION BY account_num
ORDER BY START_DT))
START_DT,
(LEAD (
START_DT)
OVER (PARTITION BY account_num
ORDER BY START_DT))
END_DT
FROM x
WHERE (START_DT + 1) <=
(END_DT - 1))
WHERE START_DT < END_DT);
Спасибо много для решения. Это действительно сработало. У меня есть данные, которые смежны и перекрываются. Но это работает. – manj
Да, я изменил запрос, когда заметил, что перекрытие позволяет считать его непрерывным. Если в будущем вы никогда не захотите включать перекрывающиеся изменения> = Start_Dt - 1 to = Start_Dt - 1. Рад, что это сработало, если вы могли бы принять ответ, который будет оценен (http://meta.stackexchange.com/questions/5234/how-do-accepting-an-answer-work) – Matt
Попробуйте строки ''E', DATE '2016-01-01', DATE '2016-01-02''; ''E', DATE '2016-01-05', DATE '2016-01-06''; и ''E', DATE '2016-01-03', DATE '2016-01-07'' он выводит 'discontiguous', когда он фактически' смежный'. – MT0