a 테이블에는 부서정보
dept_cd |dept_name
1 |부서 1
2 |부서 2
3 |부서 3
b테이블에는 사용자정보
user_id | user_jgub | dept_cd
user01 | 부장 | 1
user02 | 이사 | 1
user03 | 부장 | 2
user04 | 사원 | 3
user05 | 이사 | 3
이런식으로 있다고 할 때
한 부서에 이사와 부장만 출력하고 이사와 부장이 있을 때 이사만 출력하게 하려고 합니다.
결과 값은 아래과 같으면 됩니다.
부서 1은 user02
부서 2는 user03
부서 3은 user05
쿼리 공부 중인데 어제 동안 찾아봐도 도저히 답이 안 나오네요
group by having 이라던지 limit, order by 응용했지만 대책이 서지 않습니다.
---
select test1.dept_name,
test2.user_id
from (select t1.dept_cd,
count(*) cnt
from test1 t1,
test2 t2
where t1.dept_cd = t2.dept_cd
and t2.user_jgub in ('이사', '부장')
group by t1.dept_cd) t,
test1,
test2
where test1.dept_cd = t.dept_cd
and test2.dept_cd = t.dept_cd
and (case when t.cnt > 1 then (test2.user_jgub = '이사') else (test2.user_jgub in ('이사', '부장')) end)
;