MSSQL
[MSSQL] 이전 행 데이터 가져와 계산하기
csmkong
2023. 4. 11. 11:33
LAG 함수를 통해 이전 데이터의 값을 가져와 계산에 사용할 수 있다.
SQL Server2012버전 이후 부터 사용 가능하다.
사용방법
SELECT 문에 함수 작성.
LAG(컬럼명, 이전 행 수, 이전 행이 없을 때 기본값) OVER ( PARTITION BY 그룹으로 묶을 컬럼 리스트
ORDER BY 이전행을 찾을 때 사용할 정렬 기준)
파란색 으로 표시한 글자 생략 가능
/*********************************
* 이전 행 데이터 가져와 계산 TEST 쿼리
**********************************/
-- 1. TEST에 필요한 BASE DATA 만들기
SELECT A.ITEM
, A.VALUE
INTO #TEMP1
FROM (
SELECT 'A' ITEM, 1 VALUE UNION ALL
SELECT 'A' ITEM, 2 VALUE UNION ALL
SELECT 'A' ITEM, 3 VALUE UNION ALL
SELECT 'A' ITEM, 4 VALUE UNION ALL
SELECT 'A' ITEM, 5 VALUE UNION ALL
SELECT 'B' ITEM, 6 VALUE UNION ALL
SELECT 'B' ITEM, 7 VALUE UNION ALL
SELECT 'B' ITEM, 8 VALUE UNION ALL
SELECT 'B' ITEM, 9 VALUE UNION ALL
SELECT 'B' ITEM, 10 VALUE
) A
-- 2. BASE DATA 확인
SELECT *
FROM #TEMP1
-- 3. LAG 윈도우 함수 사용
SELECT ITEM
, VALUE
, LAG(VALUE,1,0) OVER( PARTITION BY ITEM ORDER BY VALUE ) STACKED_SUM
FROM #TEMP1
MSDN 참고
https://learn.microsoft.com/ko-kr/sql/t-sql/functions/lag-transact-sql?view=sql-server-ver16
LAG(Transact-SQL) - SQL Server
LAG(Transact-SQL)
learn.microsoft.com