oracle 날짜별 재고 조회 쿼리좀 도와주세요. 0 4 3,791

by 김탠 [Oracle 기초] 재고 sum 날짜 일자 [2024.01.26 13:36:32]


안녕하세요

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

....

도움 주시면 감사하겠습니다. ㅠㅠ

by 마카히로 [2024.01.26 15:20:58]
select 날짜, sum(일별생산량) over(order by 날짜) 누적생산량

from

(select 날짜, sum(생산량)일별생산량

from 테이블

group by 날짜

)
group by 날짜
order by 날짜

 


by 김탠 [2024.01.26 15:55:00]

sum() over() 로 해결했습니다!! 감사합니다!!


by 마농 [2024.01.29 09:07:53]
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
;

 


by 김탠 [2024.01.29 09:22:50]

신경써주셔서 감사합니다 마농님!

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