2017-12-12 8 views
-2

보고서와 항목이 2 개 있습니다. reportID 열을 통해 링크되어 있습니다. 보고서에서 모든 항목이 승인 된 상태 임에도 불구하고 거부 된 상태의 모든 보고서를 선택하려고합니다. 나는 아래 쿼리를했는데이 하나가 허용 된 상태에있는 각 항목에 대한 라인을 반환하지만, 나는 애플 리케이션에 체크 아웃이 항목에 대해 거부 된 항목도 있습니다.SQL Server 2016에서 결과가 선택에서 제외됩니다.

select r.reportID 
from Report r with(nolock) 
inner join Item i with(nolock) 
    on r.reportid = i.reportid 
where 
    (conditions for report to be in rejected state) and 
    (conditions for items to be in approved state) 
+1

샘플 테이블 데이터와 예상되는 결과를 추가하십시오. 형식이 아닌 텍스트로서 이미지가 아닙니다. – jarlh

+0

"보고서의 모든 항목이 ** 거부 됨에도 불구하고 거부 된 상태의 모든 보고서를 선택합니다. ** 보고서의 모든 항목이 ** 승인 됨에도 불구하고 거부 된 상태의 모든 보고서를 선택합니다. ** 상태 "? –

+0

지저분한 질문입니다. 여기에 게시하는 방법을 참조하십시오 : https://stackoverflow.com/help/mcve –

답변

2

보고서에서 모든 항목이 승인 상태에 있지만 당신이 거부 ​​ 상태에있는 모든 보고서에 관심이 있다면

select r.reportID 
from Report r 
where r.state = 'rejected' and NOT EXISTS 
(
    select 1 
    from Item i 
    where r.reportid = i.reportid and i.state != 'approved' 
) 

을 다음과 같이 NOT EXISTS를 사용 위의 코드는 항목이없는 보고서도 반환합니다.

+0

선택 1 에서 r.reportid = i.reportid의 항목 i 이것이 어디에 있어야합니까? – 99LittleBugsInTheCode

+0

@ 99LittleBugsInTheCode true, correct. 복사 + 붙여 넣기 오류 ... :) –