В зависимости от того, какие индексы существуют в таблице, прямое внутреннее объединение может получить более эффективный план доступа от оптимизатора запросов.
SELECT n.call_id,
n.event_dt,
n.sequence_number,
p.call_id as prior_call_id,
p.event_id as prior_event_id,
p.event_dt as prior_event_dt,
p.sequence_number as prior_sequence_number
FROM daily_events n
INNER JOIN daily_events p
ON p.sequence_number = n.sequence_number - 1
WHERE n.event_id = '5047'
AND n.event_dt >= DATE( '01/06/2012' )
AND n.event_dt <= DATE( '01/07/2012' );
Запрос предполагает, что любое событие с порядковым номером, отличающимся на единицу, является подходящим совпадением, и что call_id также не должен совпадать. Если это предположение неверно,
затем добавьте AND n.call_id = p.call_id
к предложению ON объединения.