• Oracle/PLSQL: Lead Function


    In Oracle/PLSQL, the lead function is an analytic function that lets you query more than one row in a table at a time without having to join the table to itself. It returns values from the next row in the table. To return a value from a previous row, try using the lag function.

    Syntax

    The syntax for the lead function is:

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

    expression is an expression that can contain other built-in functions, but can not contain any analytic functions.

    offset is optional. It is the physical offset from the current row in the table. If this parameter is omitted, the default is 1.

    default is optional. It is the value that is returned if the offset goes out of the bounds of the table. If this parameter is omitted, the default is null.

    Applies To

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

    For Example

    Let's take a look at an example. If we had an orders table that contained the following data:

    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

    And we ran the following SQL statement:

    select product_id, order_date,
    lead (order_date,1) over (ORDER BY order_date) AS next_order_date
    from orders;

    It would return the following result:

    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

    <NULL>

    Since we used an offset of 1, the query returns the next order_date.

    If we had used an offset of 2 instead, it would have returned the order_date from 2 orders later. If we had used an offset of 3, it would have returned the order_date from 3 orders later....and so on.

    If we wanted only the orders for a given product_id, we could run the following SQL statement:

    select product_id, order_date,
    lead (order_date,1) over (ORDER BY order_date) AS next_order_date
    from orders
    where product_id = 2000;

    It would return the following result:

    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

    <NULL>

    In this example, it returned the next order_date for product_id = 2000 and ignored all other orders.

  • 相关阅读:
    计算机毕业设计springboot+vue基本安卓/微信小程序的驾校考试预约系统 uniapp
    洛谷千题详解 | P1007 独木桥【C++、Pascal语言】
    【CSS应用篇】——CSS如何实现渐变背景
    Qt OpenGL 2D图像文字
    安全座椅行业调研:2022年市场发展现状及未来发展趋势分析
    linux中ansible安装
    MySQL高级SQL语句(上)
    大数据日志可视化分析(Hadoop+SparkSQL)
    mybatis中使用@Column(name = “`group`“)失效
    洗地机怎么选|洗地机哪款好用?添可、希亦、美的洗地机哪个最耐用质量好?
  • 原文地址:https://blog.csdn.net/yuanlnet/article/details/125485080