我正在为仍在使用MS SQL Server 2008 R2的公司工作,因此我无法使用潜在客户/滞后函数。
我知道使用分区等的子查询的一般解决方法来复制它的作用,但我正在处理一个需要大量的线索和滞后的项目。
因此,我的问题是,是否有人想出一种复制可以从UDF等调用的主要功能的智能方法,这会使这个过程更容易?
答案 0 :(得分: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()
的许多常见用法。