使用Rank over Partition查找重复项

Int*_*eer 5 sql t-sql sql-server sql-server-2005

以下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] 
Run Code Online (Sandbox Code Playgroud)

Lam*_*mak 13

改变RANKfor ROW_NUMBER.

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]
Run Code Online (Sandbox Code Playgroud)