안녕하세요
항상 고민하는 쿼리지만 심풀하게 나오질 않네요~
select 'A' Id, 111 site_id from dual union all
select 'B' Id, 111 site_id from dual union all
select 'C' Id, 111 site_id from dual union all
select 'D' Id, 111 site_id from dual union all
select 'E' Id, 111 site_id from dual union all
select 'B' Id, 222 site_id from dual union all
select 'C' Id, 222 site_id from dual union all
select 'D' Id, 222 site_id from dual union all
select 'T' Id, 222 site_id from dual union all
select 'A' Id, 333 site_id from dual union all
select 'B' Id, 333 site_id from dual union all
select 'C' Id, 333 site_id from dual union all
select 'U' Id, 333 site_id from dual union all
select 'A' Id, 444 site_id from dual union all
select 'B' Id, 444 site_id from dual union all
select 'C' Id, 444 site_id from dual union all
select 'D' Id, 444 site_id from dual union all
select 'E' Id, 444 site_id from dual union all
select 'F' Id, 444 site_id from dual union all
select 'G' Id, 444 site_id from dual
보시면 SITE_ID에 ID가 포함되있고 사이트당 ID는 유니크하게 존재 합니다.
제가 구하고 싶은건 (111과222) ,(111과333) ,(111과444), (222,333), (222,444), (333,444)
중복 아이디를 구하는 것입니다.
결과가
EX) ID , SITE_ID
B 111+222
C 111+222
D 111+222
A 111+333
. .
. .
. .
C 333+444
이런 식으로 나와야 하는 쿼리입니다.
어찌 보면 각 사이트마다 서로의 교집합을 구하는 건데 그냥 INTERSECT를 사용하는 쿼리로는 가능하지만
SITE_ID가 많을 때는 그만큼 시간이 투자가 되더라고요. 고수님들의 능력을 빌어 좀 심플한 쿼리로 변경하고 싶습니다.
방법 좀 알려주시면 감사하겠습니다.