일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- github
- python3
- pyhcarm
- python 3.7
- PyCharm
- templates
- MSSQL
- blog
- get_object_or_404
- queryset
- rank
- hackerrank
- 델파이
- Visual Studio
- Delphi
- dbadvgrid
- delphi 10.3
- GIT
- Push
- anaconda3
- c#
- declare
- advColumnGrid
- HTML
- 백준
- 중복제거
- pythonanywhere
- COMMIT
- TMS
- Django
- Today
- Total
DevHyun
실전! 일자별 재고 출력하기 본문
원래 일자별 재고는
쿼리로 입/출고량을 출력하고 프로그램에서 반복문을 통해 구해주는 형식이었는데
이번 기회에 쿼리로 다 조회해 버리자! 라는 생각을 하게됨.
'수불현황' 테이블
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문을 한번에 실행해야 한다는 점!