2017-11-09 2 views
0

나는 내가 활동적인 회원을 얻을 select from table A where status='Active'을 할 수있는 내 테이블 A.포스트 그레스 - 선택 로직

team | name | status | start_date | end_date 
---------------------------------------------- 
A  Ann Active 2016-01-01 2016-06-01 
A  Linh Active 2016-01-01 2016-06-01 
A  John Hold 2016-01-01 2016-06-01 
A  Soph Closed 2016-01-01 2016-06-01 

에 다음과 같은 데이터가 있습니다.

이제 "Active"상태 구성원 중 하나 이상이 인 경우 쿼리에서 "활성"및 "보류"상태 구성원을 모두 찾아야합니다.

"활성"상태 구성원이없는 경우 "보유"상태 구성원을 찾지 않아야합니다.

하나의 SQL에 어떻게 작성해야합니까? 나는 당신의 요구 사항을 알고있는 것처럼

+0

"Active 상태"인 * 전체 테이블 *에 * 적어도 하나의 레코드 *가있는 경우 "적어도 하나의"활성 "상태 구성원 ..."을 의미합니까? (샘플에서는 사실입니다. 활성 상태 인 매우 첫 번째 레코드가 있습니다.) –

+0

... 또는 "적어도 하나의"활성 "상태 구성원 ..."은 * 사람 *이 '활성'상태의 레코드를 가지고 있으면 *이 사람의 레코드를 제공해야 함을 의미합니다 * 'Active'상태와 'Hold'상태 모두? ('John'은 제외해야하고,'Active' 상태의 어떤 기록도 가지고 있지 않습니다.) –

+1

@DmitryBychenko'f 회원은 "Active"회원이 아니므로 다른 회원들을 포함 시키면 다른 해석을하게됩니다. 저자가 예상 결과를 게시하고 샘플 데이터를 추가 하시겠습니까? .. –

답변

1

,이 쿼리가 작동된다

SELECT * 
    FROM tableA 
WHERE status IN ('Active', 'Hold') 
    AND EXISTS (SELECT true FROM tableA WHERE status = 'Active'); 

희망이 도움이.