안녕하세요
oracle을 쓰고 있는데 쿼리문 질문좀 드려도 될까요?
테이블에서 날짜를 조회하고, 그 날짜를 데드라인으로 이전 날짜에 대한 특정 컬럼값을 sum해야 합니다. 이때 어떻게 쿼리를 짜면 좋을까요?
예컨대
테이블에 등록일(날짜) 컬럼하고 생산량 컬럼 두개가 있는데요,
날짜 | 생산량
12/01 | 20
12/01 | 20
12/02 | 15
12/03 | 10
각 등록일에 대한 재고 값을 하기 위해서 sum을 활용하고 싶습니다.
근데 등록일뿐만 아니라 날짜 기간을 걸어서 하루마다 날짜가 나오면 좋겠습니다.
제가 원하는 대로 select를 해보자면
날짜 | 생산량누계(sum)
....
11/30 | 0
12/01 | 40
12/02 | 55
12/03 | 65
12/04 | 65
....
도움 주시면 감사하겠습니다. ㅠㅠ
WITH t AS ( SELECT '20231201' dt, 20 qty FROM dual UNION ALL SELECT '20231201', 20 FROM dual UNION ALL SELECT '20231202', 15 FROM dual UNION ALL SELECT '20231203', 10 FROM dual ) SELECT a.dt , NVL(b.qty, 0) qty , SUM(NVL(b.qty, 0)) OVER(ORDER BY a.dt) sum_qty FROM (SELECT TO_CHAR(sdt + LEVEL - 1, 'yyyymmdd') dt FROM (SELECT TO_DATE('20231130', 'yyyymmdd') sdt , TO_DATE('20231204', 'yyyymmdd') edt FROM dual ) CONNECT BY LEVEL <= edt - sdt + 1 ) a LEFT OUTER JOIN (SELECT dt , SUM(qty) qty FROM t WHERE dt BETWEEN '20231130' AND '20231204' GROUP BY dt ) b ON a.dt = b.dt ;