쿼리 질문입니다 0 4 1,384

by 쩌링짱 [SQL Query] [2013.11.18 15:16:11]


안녕하세요 오라클 입문 초보입니다 쿼리 조언좀 받고싶습니다
T1테이블을 조회하려고 하는데요 구분자를 둬서 전체, Y , N 을 둬서 전체일땐 T1테이블 을 그냥 읽고 구분자가 Y일땐
T1과 T2를 비교해서 잇는것만 가져오고 N일때는 T2의 없는 내용만 불러오고 싶습니다
감이안잡혀서 도움요청드립니다 감사합니다^^


T1 테이블
코드 품명
1 사과
2
3 포도
4
 
T2테이블
코드 품명
1  사과
2   배

by 부쉬맨 [2013.11.18 15:31:12]
일단 전체 y,n을 어디서 줄꺼냐가 명시가안되어잇네요.
table 에 박혀있는 구분자일꺼냐..
아님 어디서 parameter 형태로 받는 형태일꺼냐...

기본적으로 어디서 체크값이나 이런걸로 들어온다면 코딩에서 처리하겠는덷용..
if 구분 = Y then
select 
* from t1
else
select 
* from t1 a , t2 b
where a.코드 = b.코드


by 우리집아찌 [2013.11.18 15:31:29]
-- 위에 데이터에 한정해서..
WITH T1 AS (
SELECT '1' CD ,'사과' NM FROM DUAL UNION ALL
SELECT '2','배' FROM DUAL UNION ALL
SELECT '3','포도' FROM DUAL UNION ALL
SELECT '4','귤' FROM DUAL 
),T2 AS (
SELECT '1' CD ,'사과' NM FROM DUAL UNION ALL
SELECT '2','배' FROM DUAL 
)

SELECT * FROM 
(SELECT T1.CD , 
    CASE WHEN &VAL = 'TOTAL' THEN T1.NM 
      WHEN &VAL = 'Y' AND T1.CD = T2.CD THEN T1.NM
      WHEN &VAL = 'N' AND ( T1.CD <> T2.CD OR T2.CD IS NULL ) THEN T1.NM END NM
 FROM T1 , T2
 WHERE T1.CD = T2.CD(+)
) WHERE NM IS NOT NULL

by 마농 [2013.11.18 15:52:36]
SELECT t1.*
  FROM t1, t2
 WHERE t1.cd = t2.cd(+)
   AND NVL2(t2.cd, 'Y', 'N') LIKE DECODE(:v_yn, '전체', '%', :v_yn)
;

by 손님 [2013.11.18 18:13:37]
대단 하십니다. 짝짝짝
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입