2011-09-27 6 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_NUMBER에 대해 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

감사합니다! 똑같은 문제로 좀 더 복잡하게 도왔습니다. PARTITION BY에 더 많은 열이 필요했습니다. – thirdy