관리 메뉴

안까먹을라고 쓰는 블로그

[MSSQL] 순차 합계구하기 (Feat. OVER, PARTITION BY) 본문

DataBase/MS SQL

[MSSQL] 순차 합계구하기 (Feat. OVER, PARTITION BY)

YawnsDuzin 2023. 9. 22. 15:47

 

반응형

조회 프로시저를 작성하다보면, 데이터의 순차적인 합계가 필요한 경우가 있다.
Ex) 누적되는 재고를 각각 보고 싶다고 요청하는 경우 등..


원본테이블
SELECT DT_ORDER,
	   CD_ITEM,
	   QT_ORDER
FROM [NEOE].[ORDER]
ORDER BY DT_ORDER, CD_ITEM

사용방법
SUM([합계구할 컬럼]) OVERT PARTITION BY [그룹지을 컬럼들..] ORDER BY [정렬할 컬럼들..]

※ SUM 으로 되어있는 부분은 다른 집계함수(AVG, COUNT, MIN, MAX) 로도 변경 가능합니다.
    순번을 매길때는  SUM([합계구할 컬럼]) 을 ROW_NUMBER() 로 변경하여 사용 가능합니다.

사용예제
SELECT DT_ORDER,
	   CD_ITEM,
	   QT_ORDER,
	   SUM(QT_ORDER) OVER(PARTITION BY DT_ORDER, CD_ITEM ORDER BY DT_ORDER, CD_ITEM) AS 'SUM_QT_ORDER'
FROM [NEOE].[ORDER]

 

조건 별 결과 값

PARTITION BY, ORDER BY 의 컬럼 값에 따라 조회되는 데이터 및 순서가 변경 되니, 원하는 결과값에
맞게 조회하면 될것 같다!!


좀더 디테일 한 Syntax 및 사용법은 아래의 MS공식사이트를 참고하시기 바랍니다.
ROWS 절을 사용하여, 계산할 행의 구간을 지정해 줄 수도 있습니다.
이부분은 아래의 MS공식사이트에서 확인하시기 바랍니다.
https://learn.microsoft.com/en-us/sql/t-sql/queries/select-over-clause-transact-sql?view=sql-server-ver16



반응형
Comments