0

我有两个表都包含“callid,callnumber,callduration”..现在我想获得一个具有相同callnumber而callduration大于给定值的呼叫。即

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

但这会返回满足条件的多个结果,而我只想要一个持续时间差异最小的呼叫。

4

3 回答 3

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. 
于 2013-09-06T09:51:07.163 回答
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
         ; 
于 2013-09-06T09:56:29.797 回答
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 上测试过)

于 2013-09-06T10:59:34.263 回答