경우에 따라서 where 조건을 달리하고 싶어서
where 문에 case를 쓰려고 하는데 아래 쿼리는 에러가 나는데
이럴때는 쿼리를 어떻게 작성해야 하나요?
@arg 값이 '1' 일때만 in 문장을 실행하고 싶습니다..
select *
from test001
where
(
case when @arg = '1' then
( code in ( 'A','B','C') )
end
);
동적 (Dynamic) 으로 쿼리를 작성하세요..
하기 쿼리 참고하세요
---쿼리시작---
Declare @arg char(1) Set @arg = '1' Declare @sql Varchar(Max)
Set @sql = '' Set @sql = @sql + ' Select * ' Set @sql = @sql + ' From test001 '
IF @arg = '1' Begin Set @sql = @sql + ' Where code In ( ''A'',''B'',''C'') ' End Exec (@sql)
---쿼리끝---
고등학교때 집합 다음에 다 배웠던 명제를 전산과에서 이산수학을 통해서 또 배우는 이유가 질문하신 경우와 같이 실전에서 만나는 경우가 너무나 많으므로 이럴때 써먹으라는 거죠.