Как создать запрос SQL Distinct и добавить несколько дополнительных полей - PullRequest
2 голосов
/ 19 января 2011

У меня есть следующий запрос, который выбирает комбинации имен и фамилий и показывает мне обманщиков. Это работает, а не проблемы здесь.

Я хочу включить три других поля для справки; Id, cUser и cDate. Эти дополнительные поля, однако, не должны использоваться для определения дубликатов, так как я, скорее всего, не получу дубликатов.

SELECT * FROM
(SELECT FirstName, LastName, COUNT(*) as "Count"
FROM Contacts
WHERE ContactTypeID = 1
GROUP BY LastName,FirstName
) AS X
WHERE COUNT > 1
ORDER BY COUNT DESC

Есть предложения? Спасибо!

Ответы [ 2 ]

2 голосов
/ 19 января 2011
SELECT  *
FROM    (
        SELECT  *, COUNT(*) OVER (PARTITION BY FirstName, LastName) AS cnt
        FROM    Contacts
        WHERE   ContactTypeId = 1
        ) q
WHERE   cnt > 1
ORDER BY
        cnt DESC

Это вернет все поля для каждой из дублированных записей.

0 голосов
/ 19 января 2011

Если эти поля всегда одинаковы, вы можете включить их в GROUP BY, и это не повлияет на обнаружение дубликатов

Если это не так, вы должны решить, какую агрегирующую функцию вы будете применять к ним, например, MAX () или MIN () будут работать и дать вам некоторое представление о том, какие значения связаны с некоторыми атрибутами дубликаты.

В противном случае, если вы хотите просмотреть все записи, вы можете присоединиться к источнику

SELECT X2.* FROM
(SELECT FirstName, LastName, COUNT(*) as "Count"
FROM Contacts
WHERE ContactTypeID = 1
GROUP BY LastName,FirstName
) AS X INNER JOIN Contact X2 ON X.LastName = X2.LastName AND X.FirstName = X2.FirstName 
WHERE COUNT > 1
ORDER BY COUNT DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...