Доброго времени суток.
Есть задача.
Пусть существует таблица Tbl с полями K и S (K — уникальный идентификатор записи, S — повторяющаяся последовательность сажем от 1 до 5 которая может прерываться) и так называемый Pivot в котором содержиться полная последовательность т.е. от 1 до 5
Tbl
*---*
|K|S|
*-*-*
|1|1| 1-ая последовательность
|2|2|
|3|5|
-----
|4|4| 2-ая последовательность
|5|5|
-----
|6|1| 3-я последовательность
|7|2|
|8|3|
|9|4|
*-*-*
порядок следования записей в таблице Tbl гарантирован...
Pivot
*-*
|X|
*-*
|1|
|2|
|3|
|4|
|5|
*-*
для 1-й секции разрыв последовательности между записями с ID = 2 и ID = 3
для 2-й секции не хватает чисел 1, 2, 3 перед записью с ID = 4
для 3-й секции не хватает числа 5 после записи с ID = 4
Необходимо для каждой из секций найти те числа последовательности которые были пропущены.
Вот сижу и ломаю голову. Если бы последовательность не повторялась то "пропуски" найти достаточно легко
select x from Pivot
minus
select Seq from Tbl
where ID between 1 and 3
на выходе
*-*
|X|
*-*
|3|
|4|
*-*
Но если их несколько...
Может кто-ньть сталкивался с чем-либо подобным?
Можно ли выходе получить уже готовое множество записей...
*-*
|X|
*-*
|3|
|4|
---
|1|
|2|
|3|
---
|5|
*-*
Сразу говорю что пишется енто под Oracle8i.
Очень уж не хотса делать прямой проход.