Ich bin neugierig auf das Schreiben einer SQL-Abfrage in Oracle auf der Grundlage der vorherigen Zeile in einer Liste zurückgegebener Zeilen. Grundsätzlich muss ich unsere Datenbank nach allen Zeilen abfragen, die eine ID-Nummer von 2460 haben, aber die vorherige Zeile (nach Datum sortiert) hat eine ID-Nummer von 2463. Gibt es eine Möglichkeit, dies zu tun?Oracle SQL: Auswahl basierend auf Wert in vorherigen Zeilen Spalten
Sorry, wenn das verwirrend oder eine dumme Frage ist, bin ich sehr neu und nicht wirklich gut in dieser Art von Dingen. Ich werde gerne alles klarstellen, was geklärt werden muss.
Danke!
Edit:
Hier ist die Abfrage, die ich laufen werde, basierend auf Gordon Antwort zusammen mit einem Screenshot der Ergebnisse, die ich gegen die Ergebnisse bekomme ich bin zu wollen.
select *
from (select activitytranledger.*, lag(reasontype) over (order by trandate) as prev_reason from activitytranledger) activitytranledger
where trandate between to_date('02/7/2017','MM/DD/YYYY')
and to_date('02/8/2017','MM/DD/YYYY')
and reasontype = 2460
and prev_reason = 2463
order by trandate
;
Ich nehme dann die Position # und Abfrage für den bestimmten Tag.
select *
from activitytranledger
where location = 5777
and trandate between to_date('02/7/2017','MM/DD/YYYY')
and to_date('02/8/2017','MM/DD/YYYY')
order by trandate
;
Mit dem "Transid" kann ich die spezifische Zeile finden, die von der ersten Abfrage ausgegeben wurde. Es scheint mir jedoch nicht die gewünschten Ergebnisse zu geben.
Wanted results (Beachten Sie, wie die Reihe direkt über der Zeile mit einem „Reasontype“ von 2460 einen Grund Art von 2463 hat) zu
Current results (Die Reihe I hervorgehoben sollte die 2463 in der Spalte habe ich hingewiesen habe)
Edit 2: eingeschaltet 2463 und 2460
Bearbeiten Sie Ihre Frage und liefern Sie Beispieldaten und gewünschte Ergebnisse. –