2016-10-11 2 views
1

가 나는 경우 로직의 선택 하위 쿼리 문에서 수행 할 선택IN와 CASE 및 하위 쿼리

그래서 쿼리의 아이디어는 다음과 같이이다 :

select a.client_id, 
(case when a.client_id in (select distinct a.client_id from account a 
where a.display_name='b') then '1' else '0' end) as binary 
from account a 
group by a.client_id 
order by a.client_id 

그것은 오류를 보여 주므로 어떻게 대체하고 다시 작성할 수 있는지 궁금합니다.

감사합니다.

+0

무엇이 오류입니까? – dasblinkenlight

+0

그룹화 할 대열을 – Horaciux

+0

@jpw로 추가 - 아니요 동일하지 않음 –

답변

1

binary 열이 집계가 아니며 GROUP BY 절의 멤버가 아닌 것이 문제입니다.

당신은 caseGROUP BY로 복사하거나 함께 하위 쿼리를 교체하거나 다음 CASEMAX 내부에 밀려 이제

, 집계 함수, 디스플레이 이름을 가진 다른 클라이언트의 유무에 대한 검사 'b'의 경우 외부 조인 결과를 확인하여 수행 할 수 있습니다.

1

하위 쿼리가 전혀 필요하지 않다고 생각합니다. 시도해보십시오.

select a.client_id, 
case when a.display_name = 'b' then '1' 
else '0' end as binary 
from account a 
group by a.client_id 
order by a.client_id