Oracle Sequenzielle Aktionen

8

Ich habe eine Tabelle mit Daten, die die Aktionsreihenfolge einer Zeile in einer übergeordneten Tabelle angibt, wobei die Spalten-ID der Fremdschlüssel ist. Spalte SEQ ist die Reihenfolge, in der diese Aktionen stattgefunden haben und ACTION stattgefunden hat.

%Vor%

Ich versuche, die Daten so darzustellen, dass ich SUSPEND- und RESUME-Aktionen identifizieren kann, die nicht gelöscht wurden. In diesem Szenario würde mein Ergebnis so aussehen:

%Vor%

Dies ist der Fall, weil;

  

Die SUSPEND-Aktion 2 wurde durch die CLEAR-Aktion 3 entfernt.

     

Die SUSPEND-Aktion 4 wurde durch CLEAR-Aktion 6 entfernt.

     

RESUME Aktion 8 wurde durch CLEAR Aktion 9 entfernt.

Die ACTION-Spalte kann andere Aktionen in der Sequenz enthalten, daher habe ich diese zur besseren Übersicht entfernt.

Eine Aktion wird gelöscht, wenn ein CLEAR-Befehl folgt.

Tut mir leid, wenn das verwirrend ist. Ich kann das Schema nicht ändern!

Ich habe versucht, die Frage zu vereinfachen;

%Vor%

Das Ergebnis sollte so aussehen:

%Vor%

Ich habe ein paar Ansätze ausprobiert, aber ich kann mir einfach nicht vorstellen, wie man das RESUME bei Nummer 3 stoppt.

    
cbm64 17.02.2014, 17:50
quelle

4 Antworten

3

OK. Jetzt stehle ich Geige von kordirko und Konzept von Simon und es auf meine Art kochen.

%Vor%

Was ich von Ihrem Problem verstehe, ist, dass es anfangs nicht richtig erklärt wird. Aber das zweite erwartete Ergebnis macht den Trick. (Ich könnte immer noch falsch liegen)

%Vor%

AUSGABE:

%Vor%

Was ich getan habe, war das Zuweisen eines Flags zum Überprüfen aufeinanderfolgender Aktionen, die ignoriert werden sollen, wenn sie eine ACTION namens CLEAR oder eine NEXT ACTION namens CLEAR haben. Dann habe ich kordirkos Schnipsel von LEAD -Funktion verwendet, um den Job mit einem Filter für die benötigte Aktion auszuführen.

Sieh die Geige hier

    
SriniV 28.02.2014, 09:33
quelle
5

Versuchen:

%Vor%

demo: Ссылка

    
krokodilko 17.02.2014 19:07
quelle
3

Ich habe versucht von sqliddle von kordirko , um zu vermeiden, das gleiche Schema zu erstellen ... Sorry für den Diebstahl.

Sehen Sie meinen Versuch hier: Ссылка

%Vor%

Die Idee ist:

  1. Nimm nur die Aktionen, die nicht geklärt sind und nicht von sich selbst "gelöscht" werden
  2. Finden Sie die nächste Aktion, die "resume" ist, indem Sie nur in die Zukunft schauen und ein Minimum bekommen
  3. Filtern Sie das Ergebnis, um "aktuelle Zeile" auszuschließen

Das einzige, was noch zu tun ist, ist das Hinzufügen von Namen von Aktionen, was ziemlich einfach ist, denn jede erste Aktion ist "SUSPEND" und zweitens, wenn es nicht null ist, "RESUME". Das können Sie leicht selbst tun, wie Sie es wünschen:)

    
smnbbrv 27.02.2014 17:28
quelle
2

Diese modifizierte Version von kordirkos solution sollte funktionieren:

%Vor%     
Thomas Aregger 28.02.2014 12:49
quelle

Tags und Links