쿼리 질문있습니다 너무어려워서 머리가 터질것같습니다 도와주세요 ㅜㅜ 0 2 1,893

by 재민띵 [2013.01.16 10:01:53]


제목 없음.png (44,239Bytes)


select  co180c.custnm,  sc010d.mdl, mc010m.lay, mc010m.spec, mc010m.thick,  sc010d.ioqty,  sc010d.iodt, mc010m.ctqty
from  sc010d, mc010m, co180c
where sc010d.cust =  co180c.cust
and sc010d.mdl = mc010m.mdl
and sc010d.iocls = 'O'
and  co180c.cust = :as_cust
and sc010d.mdl = :as_mdl
and sc010d.iodt = :as_iodt
and sc010d.ioqty = :al_ioqty
order by sc010d.cust

현재 로직은 이렇습니다.

이 로직을 아래 그림과 같이 ioqty를 기준으로 ctqty로 포장하였을시(ctqty의 값은 1800), 만약 ioqty의 값이 5010이라면

아래그림과같이 2개의 로우는 1800 마지막로우는 1410이 나오도록 조회하는 쿼리인데 누적쿼리로 쓰는것은 맞는것인가요?

질문이 어렵다면 답글달아주세요!

by 손님 [2013.01.16 10:38:28]
의도한 바가 맞는지 모르겠네요.. ctqty와 ioqty가 두개씩 들어오면 정확한 값이 안나올거 같은데.. 한번 확인 해보세요.

WITH MC010M
AS
(SELECT 1800 CTQTY FROM DUAL)
, SC010D
AS
(SELECT 5010 IOQTY FROM DUAL)
SELECT CASE WHEN VAL >0 AND VAL < CTQTY THEN VAL 
            WHEN VAL >0 THEN CTQTY 
            END VAL 
FROM (
SELECT IOQTY - SUM(CTQTY) OVER(ORDER BY LEVEL) + CTQTY VAL, CTQTY
FROM MC010M, SC010D
CONNECT BY LEVEL<=10)
WHERE VAL>0;

by 재민띵 [2013.01.16 10:48:13]

와 대단하시네요... 어떻게 푸는지 신기해요 이해가 아직안가서 소스보고 열심히
공부해야겠네요 너무어렵어요 ㅜㅜㅎㅎ 너무너무감사합니다 많은 도움이 될거에요 ㅎㅎ
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입