매출일 | 직원명 | 매출액 |
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월 매출도 있으나 누적에 포함되지 않습니다.
보편적으로 누적을 뽑는 쿼리랑은 모양세가 달라서 이렇게 질문드립니다.
감사합니다.
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 ;