Search code examples
sqlsql-serverduplicatesrelational-division

SQL server find Duplicates in column 1 while ask for 2 specific values in column 2


I have a table like this:

Id  first_name  department
1   John        IT
2   George      Support
3   Jack        IT
4   Jack        IT
5   George      Dev
6   Maria       Dev
7   George      IT

I am trying to get this:

Id  first_name  department
5   George      Dev
7   George      IT

I am stuck an this:

SELECT * 
FROM tbl_employees 
WHERE first_name in ( SELECT first_name FROM tbl_employees where (department = 'IT' or department =  'Dev') 
GROUP BY first_name 
HAVING count( first_name ) > 1 )

Solution

  • SQL Fiddle

    MS SQL Server 2008 Schema Setup:

    Query 1:

    DECLARE @TABLE TABLE(Id INT, first_name VARCHAR(20), department VARCHAR(20))
    INSERT INTO @TABLE VALUES
    (1   ,'John',   'IT'),
    (2   ,'George', 'Support'),
    (3   ,'Jack',   'IT'),
    (4   ,'Jack',   'IT'),
    (5   ,'George', 'Dev'),
    (6   ,'Maria',  'Dev'),
    (7   ,'George', 'IT'),
    (8  ,'Maria',  'Support')
    
    SELECT * FROM @TABLE 
    WHERE first_name IN (
                        SELECT first_name FROM @TABLE WHERE department = 'Dev'
                        INTERSECT 
                        SELECT first_name FROM @TABLE WHERE department = 'IT'
                        )
    AND department IN ('Dev', 'IT')
    

    Results:

    | ID | FIRST_NAME | DEPARTMENT |
    |----|------------|------------|
    |  5 |     George |        Dev |
    |  7 |     George |         IT |