매장별 월 누적 합계가 필요해서 찾아봤더니 아래 같이 셀프조인으로 처리하는 방식이 있어 기재한다.
마트 구성이나 집계 화면 개발 시 자주 사용하니 기억할 것.
CTE 쿼리 때문에 mssql 2005 버전이상 부터 사용가능하다.
하위 버젼은 임시테이블 또는 커서를 이용해서 해야 하니 다른 자료를 참조해야 한다.
WITH ADDSUM AS
(
select
a.prodkey --상품코드
,prodDt --yyyy-mm-dd
,sum(a.TotalAmt) sumAmt --판매금액
,ROW_NUMBER() OVER(PARTITION BY A.prodkey ORDER BY A.prodkey, pordDt) RO
from salesmt a --판매테이블
where 1=1
and a.createdate between '2011-05-01 00:00:00.000' and '2014-05-31 11:59:59.999'
group by a.prodkey, prodDt
--order by 1, 2
)
SELECT
A.prodkey
,A.prodDt
,MAX(a.sumAmt)
,SUM(B.sumAmt) addAmt -- 누적합(a의 합이 아니라 b의 합이다.)
FROM ADDSUM A
LEFT OUTER JOIN ADDSUM B
ON A.prodkey= B.prodkey
AND A.RO >= B.RO
GROUP BY A.prodkey, A.prodDT
ORDER BY 1, 2
WITH문 안의 쿼리는 재량껏...
'프로그래밍 > DBMS' 카테고리의 다른 글
ROLLUP 총계만 필요할 때 (0) | 2014.12.03 |
---|---|
MSSQL 테이블 목록 조회 (0) | 2014.12.03 |
오라클 WITH문과 CREATE TABLE 쓰기 (0) | 2014.11.24 |
MSSQL varchar 데이터 형식을 datetime 데이터 형식으로 변환하는 중 값 범위를 벗어났습니다. (0) | 2014.08.12 |
MSSQL 피벗 사용하기 (0) | 2014.07.10 |
SQL 테이블 목록 확인 및 특정 컬럼 포함 테이블 보기 (0) | 2014.06.23 |
MSSQL 1~100 까지 더미 테이블 생성하고 싶을 때 (0) | 2014.06.09 |
오라클, 중복 데이터 삭제하기 (0) | 2014.04.01 |