2017-11-02 1 views
0

저는 MS SQL Server 2008 R2를 사용하는 회사에서 일하고 있으므로 Lead/Lag Functions를 사용할 수 없습니다.SQL Lead/Lag Smart Solution

나는이 작업을 복제하기 위해 파티션 등을 사용하는 하위 쿼리의 일반적인 해결 방법을 알고 있지만 많은 리드와 지연이 필요한 프로젝트에서 작업하고 있습니다.

따라서 제 질문은 누구든지이 기능을 쉽게 수행 할 수있는 UDF 등에서 호출 될 수있는 리드 기능을 복제하는 현명한 방법을 제안했습니다.

답변

4

SQL Server 2008에서는 apply을 사용할 수 있습니다 :이 (비슷한 코드가 lead()을 처리) (1)의 지연을 대체합니다

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; 

. 동시에 여러 열을 처리 할 수 ​​있습니다. 여기에는 lag()의 많은 일반적인 용도가 포함됩니다.