所以你的桌子是
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 表。
在我的示例中,我假设这样一个名为“Numbers”的数字表只有一列“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