1

私は2つのテーブルを持っていcdrますcdr_01

////Cdr////
id calling_no called_no call_date duration
1 9899767876 0112356788 01-jan-2012 160
2 9999758743 0244356788 01-jan-2012 191

////cdr_01/////
id calling_no called_no call_date duration
1 9999758743 0244356788 01-jan-2012 190
2 9899767876 0112356788 01-jan-2012 163

idの代わりに各列を照合して2つのテーブルに対応する出力が必要であり、期間の差が-1、0、1の場合は、残りを無視して表示されます。

出力:

calling_no called_no call_date duration
9899767876 0112356788 01-jan-2012 163

助けてください。

4

2 に答える 2

1
SELECT c1.calling_no, 
       c1.called_no, 
       c1.call_date, duration =
       CASE
           WHEN c.duration > c1.duration THEN c.duration ELSE c1.duration
       END
  FROM cdr AS c INNER JOIN cdr1 AS c1 ON 
       c.calling_no = c1.calling_no AND 
       c.called_no = c1.called_no AND
       c.call_date = c1.call_date
 WHERE (SIGN(c.duration - c1.duration) * (c.duration - c1.duration)) > 1

編集:可能性があることを考慮してクエリを更新cdr.duration>cdr1.duration

于 2013-01-23T07:20:33.100 に答える
0

これはあなたに望ましい結果をもたらすコードです:

SELECT  
    c.calling_no ,  
    c.called_no ,
    c.call_date ,
    c.duration
FROM Cdr c
    JOIN Cdr_01 c1
    ON c.calling_no = c1.calling_no 
       AND c.called_no = c1.called_no 
       AND c.calle_date = c1.call_date
WHERE  (c.duration - c1.duration) NOT IN (-1, 0, 1) 
于 2013-01-23T07:22:07.917 に答える