Q&A

  • 입,출고 SQL문
SELECT  A."ITEM_CODE", D."ITEM_NAME",
SUM(NVL(A."PUT_QNT",0)) 입고,
SUM(NVL(B."PU02_QNT",0)) 출고,
SUM(NVL(C."PUT03_QNT",0)) 반품,
SUM(NVL(A."PUT_QNT",0)-NVL(B."PU02_QNT",0)-NVL(C."PUT03_QNT",0))현재고
FROM "PUT01" A,"PUT02" B, "PUT03" C, "ITEM" D
WHERE A."ITEM_CODE" = D."ITEM_CODE"
  AND A."ITEM_CODE" = B."ITEM_CODE"(+)
  AND A."ITEM_CODE"=  C."ITEM_CODE"(+)  
GROUP BY A."ITEM_CODE" ,D."ITEM_NAME"

위 sql문을 사용해서
결가값을 얻었습니다.

품명  입고   출고  반품   현재고
A       10        5     4        1  
B       5          1     1        3


문제는 만약 품명 A에서 출고를 증가하면

품명  입고   출고  반품   현재고
A       10        5     4        1  <----여기서 출고5에서 1증가하면
                                                입고 역시 10에서 20으로 증가합니다.
제가 SQL문을 잘못한걸까요???

왜 그런지 이유를 정말 모르겠네요.
제발 좀 도와주세요

1  COMMENTS
  • Profile
    열심히 2003.01.13 09:34
    일단 님 쿼리를 이런식으로 바꾸시는게 낫겠네요..

    SELECT  A."ITEM_CODE", min(D."ITEM_NAME") item_name,
    SUM(NVL(A."PUT_QNT",0)) 입고,
    SUM(NVL(B."PU02_QNT",0)) 출고,
    SUM(NVL(C."PUT03_QNT",0)) 반품,
    SUM(NVL(A."PUT_QNT",0)-NVL(B."PU02_QNT",0)-NVL(C."PUT03_QNT",0))현재고
    FROM "PUT01" A,"PUT02" B, "PUT03" C, "ITEM" D
    WHERE d.item_code = a.item_code(+)
    and d.item_code = b.item_code(+)
    and d.item_code = c.item_code(+)
    GROUP BY A."ITEM_CODE"

    기준은 코드로 해야 입고, 출고, 반품이 없더라도 자료가 나옵니다..

    기준을 입고로 잡으면 입고자료가 출고, 반품이 있더라도 자료가 안나오게

    됩니다..그리고 그룹바이는 코드로만 하는게 속도가 더빠르고요..

    출고 자료가 업데이트 됐는데 입고 데이타가 바뀐다는건 이상하네요..

    프로그램쪽에서 찾아보시는게 좋을듯 합니다...