2013-09-06 1 views
0

두 테이블 모두 "callid, callnumber, callduration"을 포함합니다. 이제 callduration이 주어진 callum보다 큰 반면 동일한 callnumber를 갖는 호출을 얻고 싶습니다. value.ie조인을 사용하여 테이블에서 특정 기준에 따라 유일한 결과를 선택하는 방법

Select a.callnumber 
     , b.callnumber 
     from table a 
     INNER JOIN table b ON ( a.callnumber = b.callnumber 
         AND a.callduration-b.callduration > value); 

그러나 이것은 최소한의 지속 시간 차이가있는 호출을 원하지만 반면이 결과는 여러개의 결과를 반환합니다.

답변

0

(가) 원래 SQL과 구두 설명 불일치에 조인 조건, 그래서 여기에 두 가지 버전은 다음과 같습니다

(V1) : 주어진 값 위의 기간과 자신의 차이가 주어진 값보다 큰 반대 :

Select a.callnumber 
     , min (a.callduration-b.callduration) mindiff 
     from table a 
INNER JOIN table b ON ( a.callnumber = b.callnumber 
         AND a.callduration > value   
         AND b.callduration > value  ) 
    group by a.callnumber 
     ; 

V2 :

Select a.callnumber 
     , min (a.callduration-b.callduration) mindiff 
     from table a 
INNER JOIN table b ON ( a.callnumber = b.callnumber 
         AND a.callduration-b.callduration > value) 
    group by a.callnumber 
     ; 
0

이렇게하면 도움이 될 것입니다.

where 절을 사용해야합니다.

SELECT a.callnumber, 
     b.callnumber 
    FROM table a 
    INNER JOIN table b ON a.callnumber=b.callnumber 
    WHERE a.callduration > value AND b.callduration > value. 
0
Select 
    a.callnumber, 
    b.callnumber 
From table a 
    Join table b 
     On a.callnumber = b.callnumber 
      And a.callduration - b.callduration > value And a.rowid < b.rowid 

--- 데이터 반복을 피하기 위해 rowid를 사용하십시오 (필자는 Oracle에서 테스트했습니다)

관련 문제