0

我在一家仍在使用 MS SQL Server 2008 R2 的公司工作,所以我不能使用 Lead/Lag Functions。

我知道带有分区等的子查询的一般解决方法来复制它的作用,但我正在研究一个需要使用大量领先和滞后的项目。

因此,我的问题是,有没有人想出一种聪明的方法来复制可以从 UDF 等调用的引导函数的作用,从而使这个过程更容易?

4

1 回答 1

4

在 SQL Server 2008 中,您可以使用apply

select t.*, tprev.*
from t outer apply
     (select top 1 tprev.*
      from t tprev
      where tprev.? = t.? and   -- partitioning columns
            tprev.? < t.?       -- order by columns
      order by ? desc           -- order by columns, ordering reversed
     ) tprev;

这将替代滞后 1(类似的代码句柄lead())。它可以同时处理多个列。这涵盖了lag().

于 2017-11-02T10:30:27.877 回答