Итак, ваш стол в форме
Order Group Sequence
1 1 4
1 1 5
1 1 7
.. а вы хотите узнать, что 1,1,6 отсутствует?
С
select
min(Sequence) MinSequence,
max(Seqence) MaxSequence
from
Orders
group by
[Order],
[Group]
Вы можете узнать границы для данного Ордена и Группы.
Теперь вы можете смоделировать правильные данные, используя специальную таблицу чисел , которая содержит только все числа, которые вы когда-либо могли использовать для последовательности. Здесь является хорошим примером такой таблицы чисел. Не важно, как вы его создадите, вы также можете создать файл Excel со всеми числами от x до y и импортировать этот лист Excel.
В моем примере я предполагаю такую таблицу чисел, которая называется «Числа» только с одним столбцом «n»:
select
[Order],
[Group],
n Sequence
from
(select min(Sequence) MinSequence, max(Seqence) MaxSequence from [Table] group by [Order], [Group]) MinMaxSequence
left join Numbers on n >= MinSequence and n <= MaxSequence
Поместите этот SQL в новое представление. В моем примере я назову представление "vwCorrectOrders".
Это дает вам данные, где последовательности являются непрерывными. Теперь вы можете объединить эти данные с исходными данными, чтобы выяснить, какие последовательности отсутствуют:
select
correctOrders.*
from
vwCorrectOrders co
left join Orders o on
co.[Order] = o.[Order]
and co.[Group] = o.[Group]
and co.Sequence = o.Sequence
where
o.Sequence is null
Должно дать вам
Order Group Sequence
1 1 6