I am using SQL-Server 2000 and am trying to find duplicates with certain conditions. Someone here helped me earlier with the duplicate part which was great, however, I can’t figure out how to filter the duplicated cases further.
I need to move the “where” statement to the subquery so that I only get contractor duplicated names as opposed to all duplicated names which is what’s happening with this code (the code is first finding all duplicates and then filtering out the contractors and I’d like it to do the opposite). The problem is that I’m mixing it into an aggregate statement and it’s giving me an error. I tried to put in another subquery within the subquery but it still gave me an error.
Any help is appreciated. Here’s a simpler (I’m learning) version of the code:
SELECT DISTINCT(c1.contactid) as 'ContactID', c1.lastname as 'Last Name', c1.firstname as 'First Name'
FROM contacts c1 INNER JOIN (SELECT lastname, firstname FROM contacts group by lastname, firstname
HAVING count(*)>1)
dups on c1.lastname=dups.lastname and c1.firstname=dups.firstname
WHERE (c1.contractor=1)
You are going to need the filter on
contractor = 1in both the subquery and the outer query. Otherwise, you might return people that happen to have the same name as a contractor and are duplicated.Also, you do not need the
Distinctkeyword if ContactId is the primary key of the Contacts table.