Hello, Dino
전/후 row에 접근하는 LAG, LEAD 함수 본문
event 발생 시간 순으로 내림차순 정렬하여
현재 row의 A 컬럼 값과 이다음 row의 A 컬럼 값의 동일 여부를 체크하는 쿼리를 작성해야 했다.
'mssql 다음 행 비교' 키워드로 구글에 검색하니 검색 결과 중 LAG, LEAD 함수가 눈에 띄었다.
SQL Server 2012부터 Self Join을 사용하지 않고, LAG, LEAD 함수를 이용하여 결과 집합에 있는 이전 행/다음 행의 데이터에 접근할 수 있다.
scalar_expression | 반환 값 |
offset |
현재 row 앞에 있는 row의 수. offset 값만큼 앞에 있는 row에서 값을 가져 옴. *기본 값 : 1 |
default |
offset이 파티션의 범위에 벗어날 때 반환할 값. *기본 값 : NULL |
OVER ( [ partition_by_clause ] order_by_clause ) |
partition_by_clause는 FORM 절이 생성한 결과 집합을 함수가 적용되는 파티션으로 나눔. 따로 지정하지 않을 경우 쿼리 결과 집합의 모든 row가 단일 그룹으로 취급 됨. order_by_clause는 함수 적용 전, 데이터의 순서 결정 |
예제 >>