2012-07-03 3 views
2

은 내가 걱정이 부분에 큰 T-SQL 저장 프로 시저를 조인 T-SQL의 경우 : 지금은에 추가 매개 변수에 대해 원하는 로직을 작성하려면에 대해

insert into @list 
(
params 
... 
) 
select params 
,.. 
,oip.someAttr 
from @list2 as O 
join dbo.abc oip 
on oip.id = O.id 
AND oip.prgId <> 4 
join .. someother tables 
... 
where oipr.attrA = 1232 

저장 프로 시저 "@value 비트"가 설정되어 있으면 "위의 AND 조건"만 확인하고 그렇지 않으면 확인해야합니다.

그래서 사전에

join dbo.abc oip 
on oip.id = O.id 
[AND]??? (i donot know). 

감사합니다 :)

답변

5

같이 할 경우이를 수행해야합니다 oip.prgId 가능성이 0의를 개최 할 수 있다고 가정 AND (oip.prgId <> 4 OR @value = 0)

+0

나는 어리 석다라고 생각한다 :) 나는 나의 뇌를 사용하는 것을 멈췄다. db-prog의 논리적 부분을 배우고 실습 할 수있는 링크를 게시 할 수 있습니까? –

0

, 여기에 고려해야 할 또 다른 옵션들/시도 :

AND oip.prgId <> 4 * @value 

@value이 1이면 부등호의 오른쪽 부분이 4으로 평가되므로 해당 행이 필터링됩니다. 그러나 @value0 인 경우 표현식은 oip.prgId <> 0과 같아집니다. 이는 oip.prgId의 모든 값을 의미합니다 (열에는 0 값을 사용할 수 없다고 가정했기 때문에) 을 의미합니다.

관련 문제