2014-10-01 4 views
0
and area.ID in (ISNULL(@area, (select ID from Areas where AreaTypeId = 3))) 

where 조건에서 where 영역의 정보를 얻기 위해 @area 매개 변수를 사용하지만 사용자가 모든 영역에 대한 모든 영역 정보를 인터럽트하지 않은 경우 나타날거야. 하지만 난 쿼리를 실행할 때 오류 메시지가 나타날 있습니다SQL Server에서 둘 이상의 값을 반환하는 방법 isnull 함수

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression. 

이 친절하게 도와를 경우 할 수 있습니다

답변

0

간단한 수정이 지정된 경우 당신의 하위 쿼리에 @area을 반환하는 것입니다 :

and area.ID in (select ISNULL(@area, ID) from Areas where AreaTypeId = 3) 

하위 쿼리없이보다 효율적으로 처리 할 수는 있지만 전체 쿼리를 보지 못하면 확실하지 않을 수 있습니다. 다음과 같음 :

select * Area 
    where (@area is not null and area.ID = @area) 
    or (@area is null and area.AreaTypeId = 3) 
관련 문제