2015-01-16 2 views
0

두 번 이상 나타나고 특정 부서와 다른 부서의 일부인 레코드를 선택하려고합니다.두 번 이상 나타나는 레코드 선택

SELECT employeeCode, employeeName 
FROM 
    Employees 
WHERE 
    Department <> 'Technology' 
    AND employeeCode IN (SELECT employeeCode 
      FROM Employees 
      GROUP BY employeeCode HAVING COUNT(*) > 1) 

문제는 내가 기술 부서의 일부 직원을 선택하려는, 그러나 그들은 또한 다른 부서에 참여 :

지금까지 내가 가지고있는 쿼리는 다음이다.

그래서 그들은 기술 부서 출신이어야하지만 가정과 출신이어야합니다. 그래서 기본적으로 쿼리가 반환해야

1 | A1 | Alex | Technology 
2 | A2 | Thor | Household 
3 | A3 | John | Cars 
4 | A3 | John | Technology 
5 | A4 | Kim | Technology 
6 | A4 | Kim | Video Games 

:

A3 | John | 
    A4 | Kim | 

를 내가 작은 내가 놓친 부분 만 생각 .. 필터링하는 방법에 대한 아이디어/데이터베이스에서이 같이 볼 수 있었다 기술과 다른 부서를 항상 사용하도록 정렬하십시오.

, BTW이 시도 ..

+0

그래서 당신은 또한 자신의 부서를 확인하려면 ???? 또는 직원 수를 두 번 이상 표시하려는 경우 ... –

답변

2

는 기술 부서에서 할 수있는 직원을 원하는 경우에 다른 부서 :

select e.employeeCode, e.employeeName 
from employees e 
group by e.employeeCode, e.employeeName 
having sum(case when e.department = 'Technology' then 1 else 0 end) > 0 and 
     count(*) > 1; 

이 표에는 중복 된 내용이 없다고 가정합니다. 중복 될 수있는 경우 count(*) > 1 대신 count(distinct department) > 1을 사용하십시오.

+0

답을 찾지 못했습니다. –

0

을 나는 검색을 시도했지만 난 내 같은 문제를 찾을 수 없습니다 :

SELECT E.employeeCode, E.employeeName 
FROM Employees E 
INNER JOIN (SELECT DISTINCT E1.employeeCode, E1.employeeName 
      FROM Employees E 
      WHERE E.Department = 'Technology' 
      ) AS A ON E.employeeCode = A.employeeCode AND E.employeeName = A.employeeName 
GROUP BY E.employeeCode, E.employeeName 
HAVING COUNT(*) > 1; 
0

서로 다른 조건을 가진 동일한 테이블에서 상관 된 하위 쿼리 조인을 사용하여 EXISTS를 사용할 수 있습니다.

SELECT e1.employeeCode, e1.employeeName 
FROM Employees e1 
WHERE e1.Department = 'Technology' 
AND EXISTS (SELECT * FROM Employees e2 
      WHERE e1.employeeCode = e2.employeeCode 
      AND e2.Department <> 'Technology') 
0

이 귀하의 경우에 작동합니다

SELECT a.employeeCode, a.employeeName 
FROM Employees a, Employees b 
WHERE 
    a.Department = 'Technology' 
    AND 
    b.Department <> 'Technology' 
    AND 
    a.employeeCode = b.employeeCode 
    AND 
    a.employeeID <> b.employeeID 
관련 문제