Хитрый SELECT...
От: Libra Россия  
Дата: 26.11.02 14:17
Оценка:
Доброго времени суток.
Есть задача.
Пусть существует таблица 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.
Очень уж не хотса делать прямой проход.
Species come and go, but the earth stands forever fast...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.