select a.작업자코드, a.작업자, a.작업반,
case when c.구분= 'Y' then c.구분 else 'N' end 구분
from a
left outer join b on a.작업장 = b.작업장
left outer join (select a.작업자코드, a.작업자 , 'Y' as 구분 //현재 작업중인 작업자 조회 구분 쿼리
from a left join b on a.작업자코드 = b.작업자코드
where a.지시번호 = ::지시번호
and a.지시순서= ::지시순서
and a.작업번호 = (select max(작업번호) from z where 지시번호 = ::지시번호 and 지시순서= ::지시순서)) c on c.작업자코드= a.작업자코드
where 1 = 1
and a.작업반 like :작업반
and b.작업장like :작업장
이렇게 쿼리를 작성했습니다.
전체 쿼리는 해당 작업반, 작업장에 있는 작업자들을 구하는 쿼리이고
서브쿼리는 작업중인 작업자들을 구하는 쿼리입니다.
작성하려고 하는 쿼리는
작업반,작업장에 있는 전체 작업자들중에
작업중인 작업자들은 비트값 Y를 줘서 구분을하려고합니다.
문제점은 작업중인 사람들중 , 작업반이 다른사람들도 있어서
현재 작성한 쿼리로 실행을하면 원하는결과가 나오지 않습니다.
지금 작업자 코드가 PK로 되어있는데
PK가 중복인경우 비트값을 주는방식으로 다시 쿼리를 작성해보려고하는데,
어떻게 작성하는게 좋을지 조언조 부탁드립니다.