2011-09-27 12 views
5

Il seguente SQL funziona per identificare i telefoni univoci in caso di disparità in LastDate. Ma se i telefoni duplicati hanno lo stesso identico LastDate non funziona.Trova i duplicati utilizzando la posizione di rango sulla riga

Qualsiasi idea sarà apprezzata.

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] 

risposta

13

Modificare il RANK per 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

grazie! mi ha aiutato con lo stesso problema, solo più complesso. Avevo bisogno di più colonne in PARTITION BY – thirdy

Problemi correlati