WHERE 절 CASE 문? 0 6 3,085

by 윤 [2013.09.12 15:01:06]


WITH t AS(
WITH t AS(
SELECT '01'A,NULL b,'asdv'c FROM dual
UNION ALL SELECT '01',NULL,'asdf' FROM dual
UNION ALL SELECT '02','a','asdf' FROM dual
UNION ALL SELECT '02','a','asdf' FROM dual
UNION ALL SELECT '02','a','asdf' FROM dual
UNION ALL SELECT '02',NULL,'asdf' FROM dual
UNION ALL SELECT '02','D','asdf' FROM dual
UNION ALL SELECT '02','D','asdf' FROM dual
UNION ALL SELECT '03','D','asdf' FROM dual
UNION ALL SELECT '03','D','asdf' FROM dual
UNION ALL SELECT '03','D','asdf' FROM dual
UNION ALL SELECT '03','a','asdf' FROM dual
)
SELECT A,B,C FROM t
WHERE A = '01'
 AND B!='D';


--위의 결과값중....01 데이터를 검색했을때 NULL이 나오게 할수 있을까요..?
--01 = 2개 결과값 (WHERE 절의 영향을 받지 않음)
--02 = 3개 결과값 (B컬럼데이터가 D가 아니며 NULL이 아닌것)
--03 = 1개 결과값 (B컬럼데이터가 D가 아니며 NULL이 아닌것)

--01인경우 있는데이터 그대로 다 출력
--02,03인경우 (D가 아니며 NULL이 아닌것을 출력)
--고수님들의 조언을 구해봅니다 ㅜㅜ
 
by 아린 [2013.09.12 15:33:23]
결과값이 이상한것 같은데요.

--01 = 2개 결과값  (WHERE 절의 영향을 받지 않음)
--02 = 3개 결과값  (B컬럼데이터가 D가 아니며 NULL이 아닌것) => 1개 아닌가요?
--03 = 1개 결과값  (B컬럼데이터가 D가 아니며 NULL이 아닌것)
 

by 윤 [2013.09.12 15:47:22]
죄송해요 ㅎㅎ.... 제가 데이터를 좀더 넣어서 하다가 복사를 잘못했나봐요 ;; 

by 아린 [2013.09.12 15:52:04]
SELECT A,B,C FROM t
 WHERE A  = :v_str
   AND ((:v_str  = '01' AND B IS NULL)
    OR  (:v_str != '01' AND B != 'D'))

by 윤 [2013.09.12 16:24:40]
감사합니다 ㅜㅜ 
아린님~ 덕분에 또다시 다음순서 진행이 되었네요 !!
많이 배웁니다~!

by 마농 [2013.09.13 17:47:17]
WHERE A = '01'
  AND LNNVL(B = 'D')

by 윤 [2013.09.17 12:28:59]
LNNVL 함수는 첨 보네요~
배워봅니다 ^^!! 감사함니다~~
함수 검색하면서 함수 정리된 싸이트를 또 발견하네요 
http://www.statwith.pe.kr/ORACLE/functions001.htm 

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