제가 이번에 이직을 하게되었는데 여기서 MSSQL을 사용하는데 제가 써본적이 없어서
완전 쌩초보수준입니다..
제가 이까지는 독학하면서 작업을 했는데 제대로 못하겠어가지구요..
해야되는게 발주테이블에 입고테이블을 LEFT OUTER JOIN을 시켜서
발주처(CUSTNO) / 발주수량(QTY) / 입고요청건수(QTY)와 납기준수,지연건수(IODATE가 약속한 납기일자고 DUEDATE가 실제납기일자입니다 약속한 납기일자(IODATE)보다 실제납기일자(DUEDATE)가
늦으면 지연이고 안에들어오면 납기준수 입니다.
주변사람한테 여쭤봤었는데 LEFT OUTER JOIN 도 써야하고 UNION ALL 도 써야한다고 합니다.
예를들어 발주가 10개가 나갔는데 입고는 8월1일에 5개 , 8월 5일에 5개가 들어오면
---------------
발주 입고 이렇게 되어버리면 입고 총 합계 수량은 맞지만 발주 총 합계 수량이
10 5 2배가 되어버려서 UNION ALL을 써야한다고 하시는데 이해도 잘 안되구요...
10 5
---------------
--발주테이블
SELECT *
FROM OPOHV
ORDER BY PODATE
--입고테이블
SELECT *
FROM OIOHV
--LEFT JOIN
SELECT *
FROM OPOHV a
LEFT JOIN OIOHV b
ON a.CUSTNO = b.CUSTNO
--발주처/발주수량
SELECT CUSTNO 발주처,SUBSTRING(PODATE, 1, 6) 발주일자, SUM(QTY)발주수량
FROM OPOHV
WHERE PODATE BETWEEN 20160801 AND 20160831
GROUP BY CUSTNO,PODATE
ORDER BY PODATE
--입고요청건수
SELECT SUM(QTY) 입고요청건수
FROM OIOHV
--납기준수/지연건수
SELECT
(CASE WHEN DUEDATE >= IODATE THEN '입고준수'
WHEN DUEDATE < IODATE THEN '지연건수'
END)
FROM OPOHV,OIOHV
말이 많이 이상하지만 이해하셨다면 도움 부탁드립니다..
Comment 2
-
항해자™
2016.09.27 13:10
-
MSSQL초보입문자
2016.09.27 14:43
죄송합니다 너무 두서없이 달았네요..
다시 글 써서 질문하겠습니다!
그래서 원하는 결과물 형태가 뭔가요??