つまり、テーブルは次の形式になります。
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]
特定の注文とグループの範囲を見つけることができます。
これで、シーケンスに使用できるすべての数値が含まれている特殊な数値テーブルを使用して、正しいデータをシミュレートできます。これがそのような数値表の良い例です。どのように作成するかは重要ではありません。xからyまでのすべての数値を含むExcelファイルを作成し、そのExcelシートをインポートすることもできます。
私の例では、1つの列「n」のみを持つ「Numbers」と呼ばれるそのような数値テーブルを想定しています。
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