1

午後/夕方すべて、

以下のクエリの最後の仕上げを探しています。特定の行の列の重複を削除する必要があります。現在、以下の SQL を使用しています。

SELECT CBNEW.*
FROM CallbackNewID CBNEW 
INNER JOIN (SELECT IDNEW, MAX(CallbackDate) AS MaxDate 
FROM CallbackNewID 
GROUP BY IDNEW) AS groupedCBNEW 
ON (CBNEW.CallbackDate = groupedCBNEW.MaxDate) AND (CBNEW.IDNEW = groupedCBNEW.IDNEW);

私の結果セットは以下のようになります

ID     RecID  Comp  Rem Date_               IDNEW   IDOLD   CB? CallbackDate
138618  83209   1   0   2012-03-16 12:40:00 83209   83209   2   16-Mar-12
138619  83209   1   0   2012-03-16 12:40:00 83209   83209   2   16-Mar-12
110470  83799   1   0   2011-07-27 11:46:00 83799   83799   10  27-Jul-11
110471  83799   1   0   2011-07-27 11:46:00 83799   83799   10  27-Jul-11

ただし、テーブルには同じ IDNEW および CallbackDate 値を持ついくつかの異なる主キーがあるため、これにより CallBackDate および IDNEW 列に重複した値が表示されます。

この結果を Excel にダンプすると、最初の ID 列で重複を削除するだけで問題は解決します。

しかし、私がやりたいことは、IDNEW と CallbackDate が重複している ID 列の最初のインスタンスのみが結果に含まれるようにすることです。

SQL の小さな断片を追加する必要があるだけだと確信していますが、これまでのところ答えを見つけることができれば行き詰まります。

よろしくお願いいたします。

4

4 に答える 4

0
SELECT
    A.*
FROM
    (SELECT
            *,
            ROW_NUMBER() OVER (PARTITION BY IDNEW ORDER BY CallbackDate DESC)
                          AS [row_num]
     FROM CallbackNewID 
    ) A
WHERE
    A.row_num = 1
于 2013-11-04T18:34:56.717 に答える