我在一家仍然使用MS SQL Server2008 R2的公司工作,所以我不能使用领先/滞后功能。
我知道子查询的一般解决方法,使用分区等来复制它所做的事情,但我正在做的一个项目需要使用很多很多的引导和滞后。
因此,我的问题是,有没有人想出一种聪明的方法来复制可以从UDF等调用的引导函数,从而使这一过程变得更容易?
发布于 2017-11-02 18:30:28
在SQL Server2008中,您可以使用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()的许多常见用法。
https://stackoverflow.com/questions/47072892
复制相似问题