2010-09-04 49 views
3

查找重複行與計數器值TSQL查找複製

假設一個表中給出

ID Name  Age 
    ----------------- 
    1 Jon  30 
    2 Skeet  30 
    1 Jon  30 
    4 Gravell 30 
    5 NULL  30 
    4 Gravell 30 
    5 NULL  30 
    7 James  40 

需要的輸出(NULL也應該比較的)

ID Name  Age Description 
    ----------------- ----------- 
    1 Jon  30  Found 1 
    1 Jon  30  Found 2 
    4 Gravell 30  Found 1 
    4 Gravell 30  Found 2 
    5 NULL  30  Found 1 
    5 NULL  30  Found 2 
    7 James  40  Found 1 
    2 Skeet  30  Found 1 

爲了找到重複我可以執行查詢

select ID,Name,Age from tableA group by ID,Name,Age having count(*) >1 

如何生成描述?

+1

不知道我理解。你怎麼能有1 - 喬恩 - 30 - 找到1,然後1喬恩 - 30 - 找到2.不應該1 - 喬恩 - 30 - 發現2是唯一的記錄(因爲它的計數) – RPM1984 2010-09-04 09:01:58

回答

1
SELECT 
    ID, Name, Age, 
    'Found ' + CAST(ROWNUMBER() OVER (PARITION BY Name ORDER BY ID) AS varchar(10)) AS Description 
FROM 
    MyTable 
ORDER BY 
    ID, Description 

你期望的輸出順序是在ID/Name級別

找到重複的基本上是隨機的...

SELECT 
    ID, Name, Age, 'Found ' + Countof AS Description 
FROM 
    (
    SELECT 
     ID, Name, Age, 
     CAST(ROWNUMBER() OVER (PARITION BY Name ORDER BY ID) AS varchar(10)) AS Countof 
    FROM 
     MyTable 
    ) foo 
WHERE 
    Countof > 1 
1

試試這個 -

select ID,Name,Age, ('Found ' + cast(count(*) as varchar(5))) as description 
from tableA group by ID,Name,Age having count(*) >1