2011-09-27 8 views
5

El siguiente SQL funciona para identificar teléfonos únicos cuando existe una disparidad en LastDate. Pero si los teléfonos duplicados tienen el mismo LastDate exacto, no funciona.Buscar duplicados usando Clasificación sobre la partición

Cualquier idea será apreciada.

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] 

Respuesta

13

Cambiar el RANK para 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] 
+0

gracias! me ayudó con el mismo problema, solo que más complejo. Necesitaba más columnas en PARTITION BY – thirdy

Cuestiones relacionadas