📜  SQL Server LAG()函数概述(1)

📅  最后修改于: 2023-12-03 15:20:14.846000             🧑  作者: Mango

SQL Server LAG() 函数概述

概述

在 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() 函数,您可以在查询结果中轻松访问先前行的值,从而实现更高级的数据分析和报告需求。