2016-07-29 2 views
1

나는 아래와 같이 테이블이 : 나는 이러한 형태의 200 개 이상의 형태와 10,000 값이오라클 SQL : 루프 카운트는 같은 열에 값 사이에 중복

Form_ID Values 
1   a 
1   b 
1   c 
1   d 
2   a 
2   d 
2   e 
3   d 
3   e 
3   f 

합니다. 그래서 각 양식 사이의 겹쳐진 고유 값을 계산하기 위해 SQL을 사용하여 루프를 수행하려고합니다. 예를 들어 form1과 form2의 고유 한 개수는 2입니다. 결과 테이블은 다음과 같아야합니다.

Form1 Form2 Overlap_Count 
1   2   2 
2   3   2 

감사합니다. 소피아

답변

1

이 시도 :

Select t1.form_Id form1, t2.Form_Id form2, 
     count(*) overLAPS 
From table t1 
    join table t2 
     on t2.Form_ID > t1.form_Id 
     and t2.[Values] = t1.[Values] 
group by t1.form_Id, t2.Form_Id 
+0

그것은 작동합니다! 정말 고마워:) –

1

당신은 자체 조인 및 집계하여이 작업을 수행 할 수 있습니다

select t1.id, t2.id, count(*) as NumOverlaps 
from t t1 join 
    t t2 
    on t1.id < t2.id and t1.value = t2.value 
group by t1.id, t2.id; 
+0

감사합니다! Oracle 11g에서는 overLAPS입니다. –