📅  最后修改于: 2023-12-03 15:20:14.846000             🧑  作者: Mango
在 SQL Server 中,LAG()
函数是用于访问当前行之前的指定行的值的窗口函数。它通常与 OVER
子句结合使用,以便在查询结果中返回先前行的值。
以下是 LAG()
函数的基本语法:
LAG (expression, offset, default) OVER ([partition_by_clause] [order_by_clause])
expression
:要访问的当前行之前的列或表达式。offset
:要返回的行数偏移量。默认情况下,offset
的值为 1,即返回前一行的值。如果要返回多个行的值,可以指定较大的偏移量。default
:如果偏移量超过了分析窗口中的行数,则使用 default
的值。如果未提供默认值,将返回 NULL
。假设有一个名为 employees
的表格,其中包含员工的姓名和加入日期。我们想要获取每个员工的加入日期之前的一个加入日期。
SELECT
name,
join_date,
LAG(join_date, 1, NULL) OVER (ORDER BY join_date) AS previous_join_date
FROM
employees
以上示例将返回以下结果:
| name | join_date | previous_join_date | |--------------|------------|-------------------| | John Doe | 2021-02-01 | NULL | | Jane Smith | 2021-03-15 | 2021-02-01 | | Mike Johnson | 2021-05-10 | 2021-03-15 | | Sarah Brown | 2021-06-20 | 2021-05-10 |
在以上示例中,LAG()
函数将每个员工的上一个加入日期作为 previous_join_date
返回。通过对 LAG()
函数中的偏移量进行更改,可以返回更多先前行的加入日期。
LAG()
函数只在 SQL Server 2012 及更高版本中可用。LAG()
函数仅在使用 ORDER BY
子句时才有意义,以确保正确的顺序。LAG()
函数还可以与其他窗口函数(如 LEAD()
函数)结合使用,以进行更复杂的分析操作。以上是 SQL Server 中 LAG()
函数的基本概述和用法介绍。使用 LAG()
函数,您可以在查询结果中轻松访问先前行的值,从而实现更高级的数据分析和报告需求。