본문 바로가기

DataBase/MSSQL

[MSSQL] 이전행과 다음행 데이터를 가져오는 LAG,LEAD 함수

SQL Server 2012 에서 행을 비교할때 사용할수있는 함수입니다.

 

 

1. 원본데이터

SELECT ProductID, ModifiedDate, StandardCost
 FROM  Production.ProductCostHistory
WHERE  ProductID IN (711, 712, 713)
ORDER BY ProductID, ModifiedDate

1.원본데이터 실행결과

 

2. LAG/LEAD 함수

SELECT ProductID, StandardCost, ModifiedDate,
       LAG(StandardCost, 1, NULL) OVER (PARTITION BY ProductID ORDER BY ModifiedDate) 
       AS PrevStandardCost,
       LEAD(StandardCost, 1, NULL) OVER (PARTITION BY ProductID ORDER BY ModifiedDate)
       AS NextStandardCost
  FROM Production.ProductCostHistory
 WHERE ProductID IN (711, 712, 713)
 ORDER BY ProductID, ModifiedDate

2.LAG/LEAD 실행결과

 

출처: https://windtrap.tistory.com/95 [곰탱이의 개인블로그]