TSQL Поиск дубликатов - PullRequest
       0

TSQL Поиск дубликатов

3 голосов
/ 04 сентября 2010

Поиск дублирующейся строки с числами подсчета

Предположим, что таблица задана

  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 ]

1 голос
/ 04 сентября 2010
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

Ваш желаемый порядок вывода по сути случайный на уровне идентификатора / имени

Чтобы найти дубликаты ...

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 голос
/ 04 сентября 2010

Попробуйте это -

select ID,Name,Age, ('Found ' +  cast(count(*) as varchar(5))) as description
from tableA  group by ID,Name,Age having count(*) >1 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...