2016-08-02 2 views
0

where 절에서 정확한 값을 가져 오는 쿼리를 작성하는 방법을 알고 싶습니다. 예를 들어, 다음 데이터가있는 테이블이 있습니다.SQL 정확한 값을 가져 오는 쿼리

USER ACCESS 
A  DEFAULT 
A  EVERYONE 
B  DEFAULT 
B  EVERYONE 
B  WEBACCESS 

출력이 사용자 A 만 가져 오는 방식으로 SQL 쿼리를 작성해야합니다. 나는 group by을 사용해 보았고 기록의 수를 확인했지만 두 사용자를 모두 데려왔다.

미리 감사드립니다.

+3

질문을 편집하고 표 레이아웃을 표시하십시오. –

+0

자, 이제 테이블 데이터가 적합합니다. 그러나 귀하의 선택 진술은 어떤 기준에 의해 사용자 A 만 표시되도록 결정합니까? 사용자 A에게는 정확히 두 개의 레코드가 있기 때문에? 또는 사용자 A에게 'WEBACCESS'항목이 없기 때문에? 아니면 적용 할 규칙이 또 있습니까? –

+0

사용자 및 사용자 모두에게 액세스 권한을 가진 사용자가 있어야합니다.이 경우 사용자 B는 WEBACCESS라는 추가 액세스 권한을 가지므로 사용자 B는 결과에 나타나서는 안됩니다. – max092012

답변

0

다른 행에 정보를 저장하고 있으며 각 사용자에 대해 결과를 "병합"하려고합니다. 그렇다면 다음과 같이 할 수 있습니다.

select userid 
from t 
group by userid 
having sum(case when access = 'EVERYONE' then 1 else 0 end) > 0 and 
     sum(case when access = 'DEFAULT' then 1 else 0 end) > 0 and 
     count(distinct access) = 2; 
관련 문제