누계 관련하여 쿼리 질문드립니다. 0 2 881

by 황희성 [SQL Query] 누계 [2017.11.08 20:50:43]


매출일 직원명 매출액
2017년10월 홍길동 10000
2017년10월 홍길동 20000
2017년10월 임꺽정 10000
2017년11월 홍길동 25000
2017년11월 임꺽정 30000
2017년12월 홍길동 30000

위와 같은 데이터가 있을때 연도와 월로 검색하면 아래와 같이 결과가 나왔으면 합니다.

<2017년10월>

매출일 직원명 월매출 누적매출
2017년10월 홍길동 30000 30000
2017년10월 임꺽정 10000 10000

<2017년11월>

매출일 직원명 월매출 누적매출
2017년11월 홍길동 25000 55000
2017년11월 임꺽정 30000 40000

 

위 결과물에서 누적매출은 같은 연도 1월부터 해당월까지의 누적매출입니다.

예를 들어 직원별로 2017년11월 검색을 하면 월매출은 2017년11월의 SUM이 나오고 누적매출에는 2017년 1월부터 2017년 11월까지의 누적매출이

나오는 것이죠. 12월 매출도 있으나 누적에 포함되지 않습니다. 

보편적으로 누적을 뽑는 쿼리랑은 모양세가 달라서 이렇게 질문드립니다.

감사합니다.

by 마농 [2017.11.08 21:03:34]
WITH t AS
(
SELECT '20171001' dt, '홍길동' nm, 10000 amt FROM dual
UNION ALL SELECT '20171002', '홍길동', 20000 FROM dual
UNION ALL SELECT '20171003', '임꺽정', 10000 FROM dual
UNION ALL SELECT '20171101', '홍길동', 25000 FROM dual
UNION ALL SELECT '20171102', '임꺽정', 30000 FROM dual
UNION ALL SELECT '20171203', '홍길동', 30000 FROM dual
)
SELECT :v_ym ym
     , nm
     , SUM(DECODE(SUBSTR(dt, 1, 6), :v_ym, amt)) amt_m
     , SUM(amt) amt_y
  FROM t
 WHERE dt >= SUBSTR(:v_ym, 1, 4)||'0101'
   AND dt <= :v_ym||'31'
 GROUP BY nm
;

 


by 황희성 [2017.11.09 09:22:20]

답변 진심으로 감사드립니다.^^

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입