TSQL查找重复项

时间:2010-09-04 08:49:21

标签: sql-server-2005

查找带有计数的重复行

假设有一个表

  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

如何生成说明?

2 个答案:

答案 0 :(得分:1)

试试这个 -

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

答案 1 :(得分: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 /名称级别基本上是随机的

查找重复项...

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