LEAD-Funktion Oracle/PLSQL

In diesem Oracle-Lernprogramm wird erläutert, wie Sie die Oracle/PLSQL LEAD-Funktion mit Syntax und Beispielen verwenden.

Beschreibung

Die Oracle/PLSQL LEAD-Funktion ist eine analytische Funktion, mit der Sie mehr als eine Zeile in einer Tabelle gleichzeitig abfragen können, ohne die Tabelle mit sich selbst verbinden zu müssen. Es gibt Werte aus der nächsten Zeile in der Tabelle zurück. Um einen Wert aus einer vorherigen Zeile zurückzugeben, versuchen Sie es mit der LAG-Funktion.

Syntax

Die Syntax für die LEAD-Funktion in Oracle/PLSQL lautet:

LEAD ( expression [, offset [, default] ] ) OVER ( [ query_partition_clause ] order_by_clause )

Parameter oder Argumente

expression Ein Ausdruck, der andere integrierte Funktionen enthalten kann, aber keine analytischen Funktionen enthalten kann.

offset Wahlweise. Es ist der physikalische Offset von der aktuellen Zeile in der Tabelle. Wenn dieser Parameter nicht angegeben wird, ist der Standardwert 1.

default Wahlweise. Es ist der Wert, der zurückgegeben wird, wenn der Offset außerhalb der Grenzen der Tabelle liegt. Wenn dieser Parameter nicht angegeben wird, ist der Standardwert null.

offset Wahlweise. Es wird verwendet, um die Ergebnisse basierend auf einem oder mehreren Ausdrücken in Gruppen zu partitionieren.

order_by_clause Wahlweise. Es wird verwendet, um die Daten in jeder Partition zu ordnen.

Kehrt zurück

  • Die LEAD-Funktion gibt Werte aus der nächsten Zeile in der Tabelle zurück.

Gilt für

Die LEAD-Funktion kann in folgenden Versionen von Oracle/PLSQL verwendet werden:

  • Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i

Beispiel

Die LEAD-Funktion kann in Oracle/PLSQL verwendet werden.

Schauen wir uns ein Beispiel an. Wenn wir eine Bestellungstabelle hätten, die folgende Daten enthält:

ORDER_DATE PRODUCT_ID QTY
25/09/2007 1000 20
26/09/2007 2000 15
27/09/2007 1000 8
28/09/2007 2000 12
29/09/2007 2000 2
30/09/2007 1000 4

Und wir haben die folgende SQL-Anweisung ausgeführt:

Es würde das folgende Ergebnis zurückgeben:

PRODUCT_ID ORDER_DATE NEXT_ORDER_DATE
1000 25/09/2007 26/09/2007
2000 26/09/2007 27/09/2007
1000 27/09/2007 28/09/2007
2000 28/09/2007 29/09/2007
2000 29/09/2007 30/09/2007
1000 30/09/2007

In diesem Beispiel sortiert die LEAD-Funktion alle order_date Werte in der order Tabelle in aufsteigender Reihenfolge und gibt dann das nächste order_date zurück, da ein Offset von 1 verwendet wurde.

Wenn wir stattdessen einen Offset von 2 verwendet hätten, hätte das order_date später von 2 Bestellungen zurückgegeben. Wenn wir einen Offset von 3 verwendet hätten, hätte das order_date später von 3 Bestellungen zurückgegeben … und so weiter.

Verwenden von Partitionen

Sehen wir uns nun ein komplexeres Beispiel an, in dem wir eine Klausel für die Abfragepartition verwenden, um das nächste order_date für jede product_id zurückzugeben.

Geben Sie die folgende SQL-Anweisung ein:

Es würde das folgende Ergebnis zurückgeben:

PRODUCT_ID ORDER_DATE NEXT_ORDER_DATE
1000 25.09.2007 27.09.2007
1000 27.09.2007 30.09.2007
1000 30.09.2007 NULL
2000 26.09.2007 28.09.2007
2000 28.09.2007 29.09.2007
2000 29.09.2007 NULL

In diesem Beispiel wird die LEAD-Funktion die Ergebnisse nach product_id partitionieren und dann nach order_date sortieren, wie in PARTITION BY product_id ORDER BY order_date. Dies bedeutet, dass die LEAD-Funktion nur einen order_date Wert auswertet, wenn product_id mit dem aktuellen Datensatz übereinstimmt. produkt-id Wenn eine neue product_id gefunden wird, startet die LEAD-Funktion ihre Berechnungen neu und verwendet die entsprechende Partition product_id.

Wie Sie sehen können, hat der dritte Datensatz in der Ergebnismenge für das next_order_date den Wert NULL, weil es der letzte Datensatz für die Partition ist, in dem product_id 1000 ist (sortiert nach Bestelldatum). Dies gilt auch für den 6. Datensatz, in dem product_id 2000 ist.