2011-09-27 18 views
5

Aşağıdaki SQL, LastDate'te bir eşitsizlik olduğunda benzersiz telefonları tanımlamaya çalışır. Ancak iki telefonun aynısı LastDate ile aynıysa, çalışmaz.Rütbe Üzerinde Bölümü Kullanarak Çoğaltmaları Bul

Herhangi bir fikir bunu takdir edecektir.

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] 

cevap

13

değiştirin ROW_NUMBER için RANK.

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

Teşekkürler! aynı problemle bana yardımcı oldu, sadece daha karmaşık. PARTITION BY içinde daha fazla sütuna ihtiyacım vardı – thirdy