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_DATEPRODUCT_IDQTY
25/09/2007100020
26/09/2007200015
27/09/200710008
28/09/2007200012
29/09/200720002
30/09/200710004

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

Es würde das folgende Ergebnis zurückgeben:

PRODUCT_IDORDER_DATENEXT_ORDER_DATE
100025/09/200726/09/2007
200026/09/200727/09/2007
100027/09/200728/09/2007
200028/09/200729/09/2007
200029/09/200730/09/2007
100030/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_IDORDER_DATENEXT_ORDER_DATE
100025.09.200727.09.2007
100027.09.200730.09.2007
100030.09.2007NULL
200026.09.200728.09.2007
200028.09.200729.09.2007
200029.09.2007NULL

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.