LEAD ФУНКЦИЯ

Узнайте, как использовать Oracle / PLSQL функцию LEAD с синтаксисом и примерами.

Описание

Функция Oracle / PLSQL LEAD является аналитической функцией, что позволяет запрашивать более одной строки в таблице, в то же время, не имея для присоединения к себе таблицы. Возвращает значения из следующей строки в таблице. Для возврата значения из предыдущего ряда, попробуйте использовать функцию LAG.

Синтаксис

Синтаксис функции Oracle / PLSQL LEAD:

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

Параметры или аргументы

expression выражение, которое может содержать другие встроенные функции, но не может содержать аналитические функции.
offset является обязательным. Это физические смещение от текущей строки в таблице. Если этот параметр не указан, то по умолчанию 1.
default является необязательным. Это значение, которое возвращается, если offset выходит за границы таблицы. Если этот параметр не указан, то по умолчанию Null.

Применение

Функцию LEAD можно использовать в следующих версиях Oracle / PLSQL:

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

Пример

Функция LEAD может быть использована в Oracle / PLSQL.

Посмотрим на примере. Если у нас был стол заказов, который содержал следующие данные:

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

И запустим следующий запрос:

Получим следующий результат:

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

Так как мы использовали offset 1, запрос возвращает следующий ORDER_DATE.

Если бы мы использовали offset 2 вместо этого, он бы вернул ORDER_DATE 2 заказами позже. Если бы мы использовали offset 3, это было бы вернул ORDER_DATE на 3 заказа позже …. и так далее.

Если мы захотим узнать только заказы для данного product_id, выполним следующий SQL запрос:

Запрос вернет следующий результат:

PRODUCT_ID ORDER_DATE NEXT_ORDER_DATE
2000 26/09/2007 28/09/2007
2000 28/09/2007 29/09/2007
2000 29/09/2007

В этом примере, вернется следующий ORDER_DATE для product_id = 2000 и будут проигнорированы все другие заказы.

Смотри также в категории: Дополнительные функции Oracle / PLSQL