2011-09-27 5 views
5

次のSQLは、LastDateに相違がある場合に一意の電話を識別する際に機能します。 しかし、重複した電話機のLastDateが同じであれば、それは機能しません。ランクオーバーパーティションを使用して重複を見つける

任意のアイデアをいただければ幸いです。

SELECT * FROM 
(
    SELECT ID, Phone, [LastDate] 
    ,RANK() OVER (PARTITION BY Phone ORDER BY [LastDate]) AS 'RANK',       
      COUNT(Phone) OVER (PARTITION BY Phone) AS 'MAXCOUNT' 
       FROM MyTable   
       WHERE Groupid = 5 
      ) a 
       WHERE [RANK] = [MAXCOUNT] 

答えて

13

ROW_NUMBERRANKを変更してください。

SELECT * 
FROM ( SELECT ID, Phone, [LastDate], 
        ROW_NUMBER() OVER (PARTITION BY Phone ORDER BY [LastDate]) AS 'RANK', 
        COUNT(Phone) OVER (PARTITION BY Phone) AS 'MAXCOUNT' 
      FROM MyTable 
      WHERE Groupid = 5) a 
WHERE [RANK] = [MAXCOUNT] 
+0

ありがとうございました!私は同じ問題を抱えていましたが、もっと複雑でした。私はPARTITION BYにもっと多くの列が必要でした – thirdy

関連する問題