DevHyun

실전! 일자별 재고 출력하기 본문

SQL

실전! 일자별 재고 출력하기

D3V3L0P3R 2021. 9. 2. 14:55

원래 일자별 재고는 

쿼리로 입/출고량을 출력하고 프로그램에서 반복문을 통해 구해주는 형식이었는데

이번 기회에 쿼리로 다 조회해 버리자! 라는 생각을 하게됨.

 

'수불현황' 테이블

DATE,IN_QTY,OUT_QTY

 

* 2021-09-01~2021-09-02 '1234' 약품에 대한 일자별 재고 현황 출력 예시

일자 입고 출고 재고량
2021-09-01 5 0 10(이월 재고 5)
2021-09-02 3 2 11

 

*'1234' 약품의 2021-09-01 이전까지 재고는 5개여서 2021-09-01에 입고 5개 까지 해서 총 재고량은 10개.

 

-- @STOCK 변수 선언

DECLARE @STOCK int 

 

-- '1234' 약품의 이월 재고를 SELECT 하면서 @STOCK 변수에 입력

SELECT TOP 1 @STOCK = ISNULL(SUM(IN_QTY - OUT_QTY,0)

  FROM 수불현황

WHERE CODE = '1234'

   AND DATE < '20210901';

 

-- TEMP 테이블 생성(ROWNUM 추가 및 검색기간 중 수불 현황 반영)

WITH TEMP AS (

SELECT ROW_NUMBER() OVER(ORDER BY DATE) AS ROWNUM,IN_QTY,OUT_QTY

  FROM 수불현황

 WHERE DATE BETWEEN '2021-09-01' AND '2021-09-02'

    AND CODE = '1234' )

 

-- 최종 SELECT

-- @STOCK(이월재고)에서 일자별 입고량,출고량을 계산하는 방식

SELECT ROWNUM,DATE,IN_QTY,OUT_QTY,

          ISNULL(@STOCK,0)+SUM(IN_QTY-OUT_QTY) OVER ORDER BY ROWNUM) AS STOCK

  FROM TEMP
 ORDER BY ROWNUM ASC

 

**주의 할점은 첫줄부터 끝줄까지 SQL문을 한번에 실행해야 한다는 점!

Comments