Select시 Where절 질문입니다...ㅜ.ㅜ 0 5 767

by DB초보 [Oracle 기초] [2015.11.04 10:59:49]


쿼리결과.PNG (18,904Bytes)

안녕하세요!

현재 Select로 원하는 데이터를 가져오고 싶은데 Where절에 어떻게 해야될지 모르겠습니다...ㅜ.ㅜ

SELECT DRAFT_NO, REQUEST_TYPE, MATNR, DRAFT_OLDNO
      FROM ZMMT010
     WHERE REQUEST_TYPE IN( '3', '4')
      AND VSL_CD = 'TSMR';

 

일단 이렇게 하고 1차적으로 결과는 나왔는데요...

원하는 데이터는 저 결과에서 맨 밑에 DRAFT_NO의 끝자리가 0008인 데이터 2개만 가져오고 싶습니다.

즉, REQUEST_TYPE이 4일때의 DRAFT_OLDNO와 REQUEST_TYPE이 3일때의 DRAFT_NO가 같은

데이터는 제외하고 싶습니다.

WHERE절에 저 조건을 어떻게 추가해야될지 모르겠어요..ㅜ.ㅜ

고수님들 답변 부탁드립니다!!

by 부쉬맨 [2015.11.04 11:09:17]

결과값만 보면 이해되는데

설명을 듣으면 좀 어려운...

draft_no 가 고정길이라면 맨뒤에 4자리만 substr으로 잘라서 비교

substr(draft_no,12,4) = '0008'


by DB초보 [2015.11.04 11:21:58]

아..설명이 잘못됐나보네요^^;;

저 쿼리는 예제고 꼭 저 0008 을 가져오고 싶은건 아닙니다..

저 예시처럼 REQEUST_TYPE을 '3'만 가지고 있는 데이터를 가져오고 싶은 겁니다.

저 결과 예시에는 마지막 줄에 0008이 그런 케이스라서...;

3이 생성이고 4가 취소라서....생성과 취소 쌍은 안불러오고 실제 마지막으로 생성된 것만

보여주고싶은거거든요


by 부쉬맨 [2015.11.04 11:26:48]

WHERE REQUEST_TYPE ='3' 하면되는거아닌가요??


by 창조의날개 [2015.11.04 11:29:56]

SELECT DRAFT_NO, REQUEST_TYPE, MATNR, DRAFT_OLDNO
FROM ZMMT010 AA
WHERE AA.REQUEST_TYPE = '3'
  AND NOT EXISTS (SELECT 1 FROM ZMMT010
                   WHERE REQUEST_TYPE = '4'
                     AND DRAFT_OLDNO = AA.DRAFT_NO)
;

 


by DB초보 [2015.11.04 11:50:50]

오!! 감사합니다..ㅜ.ㅜ

NOT EXISTS로해서 조건절에 SELECT 쿼리를 쓰면 되는군요....

한수 배우고 갑니다!!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입