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 )
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')
| ID | FIRST_NAME | DEPARTMENT |
|----|------------|------------|
| 5 | George | Dev |
| 7 | George | IT |