So Tisch ist in Form von
Order Group Sequence
1 1 4
1 1 5
1 1 7
..und Sie wollen herausfinden, dass 1,1,6 fehlt?
Mit
select
min(Sequence) MinSequence,
max(Seqence) MaxSequence
from
Orders
group by
[Order],
[Group]
können Sie die Grenzen für eine bestimmte Ordnung und Gruppen erfahren.
Jetzt können Sie die korrekten Daten simulieren, indem Sie eine spezielle Nummerentabelle verwenden, die nur jede einzelne Zahl enthält, die Sie für eine Sequenz verwenden könnten. Here ist ein gutes Beispiel für eine solche Zahlentabelle. Es ist nicht wichtig, wie Sie es erstellen, Sie können auch eine Excel-Datei mit allen Zahlen von x bis y erstellen und dieses Excel-Blatt importieren.
In meinem Beispiel nehme ich an, eine solche Zahlen Tabelle "Numbers" mit nur einer Spalte "n" genannt:
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
Put, die in eine neue Ansicht SQL. In meinem Beispiel werde ich die Ansicht "vwCorrectOrders" aufrufen.
Dies gibt Ihnen die Daten, wo die Sequenzen kontinuierlich sind.Jetzt können Sie verbinden, dass die Daten mit den Originaldaten, um herauszufinden, welche Sequenzen fehlen:
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
geben Sollten Sie
Order Group Sequence
1 1 6
welche sql db verwenden Sie. in oracle könnte man das mit den ranking funktionen machen ... –
Microsoft Access :) – Tihauan
Die Antworten stimmen nicht zu In welcher Spalte die 1,2,3,4 Daten stehen, vielleicht kann man das mit einigen Beispielen verdeutlichen. – Andomar