선배님들의 도움이 필요합니다. 0 3 1,629

by 갱이 [2014.09.29 15:32:36]


안녕하세요

오전부터 쿼리를 만들다가 막히는 부분이 있어 선배님들의 조언을 얻고자 글을 올립니다.

전체데이터 1~6까지의 데이터중

A라는 사람이 3,5번 데이터를 가지고 있고

B라는 사람이 2,3,6번 데이터를 가지고 있습니다.

 

이때 A라는 사람의 기준으로 데이터를 보여주려고 할때

B라는 사람의 데이터와 중복되는 데이터를 제외한 5번만 조회되도록 하고싶습니다.

이럴때는 어떤 방법을 써야 할까요??

선배님 도와주세요!!

 

by 빈이 [2014.09.29 15:42:55]
SELECT 사람, KEY FROM TAB
WHERE 사람 = 'A'
AND KEY NOT IN (SELECT KEY FROM TAB WHERE 사람='B') ;

------------------------------------------------------

SELECT 사람, KEY FROM TAB
WHERE 사람 = 'A'
AND KEY IN ( SELECT KEY FROM TAB GROUP BY KEY HAVING 1 = COUNT(*) );

--------------------------------------------------------------------

SELECT 사람, KEY FROM TAB
WHERE 사람 ='A'
AND KEY IN ( 
SELECT KEY FROM TAB WHERE 사람 ='A' MINUS 
SELECT KEY FROM TAB WHERE 사람 ='B'
);

등등등....?

 


by 마농 [2014.09.29 15:53:01]
WITH t AS
(
SELECT 'A' id, 3 cd FROM dual
UNION ALL SELECT 'A', 5 FROM dual
UNION ALL SELECT 'B', 2 FROM dual
UNION ALL SELECT 'B', 3 FROM dual
UNION ALL SELECT 'B', 6 FROM dual
)
SELECT cd
  FROM t
 GROUP BY cd
 HAVING COUNT(*) = COUNT(DECODE(id, 'A', 1))
;

 


by 갱이 [2014.09.29 16:38:21]

감사합니다 ^^

DECODE로 해결했어요~

A와 B라는 사람의 키칷은 따로 없어서 ㅠ_ㅠ 데이터 뽑아 내기가 넘 힘들었어요 ㅠㅠ

중복을 제거하는 방법이 이렇게나 많았군요~!! ^^

알려주셔서 감사합니다~!!

 

 

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