Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Hello, Dino

전/후 row에 접근하는 LAG, LEAD 함수 본문

DB/MS SQL

전/후 row에 접근하는 LAG, LEAD 함수

초보디노 2020. 3. 30. 14:07

event 발생 시간 순으로 내림차순 정렬하여

현재 row의 A 컬럼 값과 이다음 row의 A 컬럼 값의 동일 여부를 체크하는 쿼리를 작성해야 했다.

 

'mssql 다음 행 비교' 키워드로 구글에 검색하니 검색 결과 중 LAG, LEAD 함수가 눈에 띄었다.

 

SQL Server 2012부터 Self Join을 사용하지 않고, LAG, LEAD 함수를 이용하여 결과 집합에 있는 이전 행/다음 행의 데이터에 접근할 수 있다.

 

 

 

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는 함수 적용 전, 데이터의 순서 결정

 

 

 

 

예제 >>