집 >데이터 베이스 >MySQL 튜토리얼 >SQL Server 2008에서 LEAD 및 LAG 기능을 복제하는 방법은 무엇입니까?
SQL Server 2008의 LEAD LAG 기능 대체
SQL Server 2008에서는 LEAD 및 LAG 기능을 사용할 수 없기 때문에 비교할 때 문제가 발생합니다. 현재 행과 후속 행의 값. 이 문서에서는 이 기능이 필요한 SQL Server 2008 사용자를 위한 대체 방법을 살펴봅니다.
다음 및 이전 행 쿼리
목표는 현재 행이 있는 행을 격리하는 것입니다. StatusId는 1이고 다음 행의 StatusId는 6이며, 두 행 모두 동일한 분 타임스탬프를 갖습니다. LEAD 및 LAG 기능을 사용할 수 없으므로 self-join을 사용할 수 있습니다.
Self-Join 접근 방식
다음 쿼리는 테이블(참조: t) 및 "다음 행" 테이블(tnext라고 함). 조인 조건은 다음과 같습니다.
정확한 분 일치 쿼리
정확한 분 일치가 필요한 경우- 분 근접한 경우 datepart(분, t.MinStartTime) = datepart(분, 조건을 포함하도록 쿼리를 수정할 수 있습니다. tnext.MinStartTime).
쿼리 예
제공된 테이블을 예로 사용하여 쿼리의 두 가지 버전은 다음과 같습니다.
버전 1(분 이내) 근접성):
select t.* from table t join table tnext on t.id = tnext.id - 1 and t.StatusId = 1 and tnext.StatusId = 6 and datediff(second, t.MinStartTime, tnext.MinStartTime) < 60;
버전 2(정확한 분 일치):
select t.* from table t join table tnext on t.id = tnext.id - 1 and t.StatusId = 1 and tnext.StatusId = 6 and datediff(second, t.MinStartTime, tnext.MinStartTime) < 60 and datepart(minute, t.MinStartTime) = datepart(minute, tnext.MinStartTime);
출력
이 쿼리의 출력은 지정된 기준(ID 6)을 충족하는 원하는 행을 검색합니다. StatusId는 1이고 그 뒤에는 같은 분 타임스탬프에 StatusId 6이 있는 ID가 옵니다(버전 2의 경우).
위 내용은 SQL Server 2008에서 LEAD 및 LAG 기능을 복제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!