2014-09-08 5 views
2

내 저장 프로 시저에 다음과 같은 쿼리가 있습니다. 내 코드에서 @SUBCONDITION을 설정합니다.조건부 where 절이 sql 2012

declare @SUBCONDITION VARCHAR(100)= NULL 
if(@SUBCONDITION='DEPT') 
BEGIN 
Select * from table1 where IDDEPT=1 
END 

ELSE IF (@SUBCONTION='GRADE') 
BEGIN 
SELECT * FROM TABLE1 WHERE IDGRADE=1 
END 

ELSE IF(@SUBCONDITION='SECTION') 
BEGIN 
SELECT * FROM TABLE1 WHERE IDSECTION=1 
END 

모든 것이 잘 작동합니다. 제 질문은 단 하나의 쿼리에서이 작업을 수행 할 수 있는지 여부입니다. ??? where 절에서 if 또는 case 또는 something을 사용하는 것과 같은가?

답변

1

이 시도 :

SELECT * 
FROM table1 
WHERE 1 = (CASE @SUBCONDITION 
       WHEN 'DEPT' THEN IDDEPT 
       WHEN 'GRADE' THEN IDGRADE 
       WHEN 'SECTION' THEN IDSECTION 
       ELSE 0 
      END); 
+0

감사 톤 SAHARSH ... 건배! –

1

이 시도 :

Select * from table1 
where @SUBCONDITION = 'DEPT' AND IDDEPT=1 OR 
    @SUBCONDITION = 'GRADE' AND IDGRADE=1 
    @SUBCONDITION = 'SECTION' AND IDSECTION=1 
2

예, 한 쿼리에서이 작업을 수행 할 수 있습니다. 그 결과는 다음과 같습니다

Select * 
from table1 
where (@SUBCONDITION = 'DEPT' and IDDEPT = 1) or 
     (@SUBCONTION = 'GRADE') and IDGRADE = 1) or 
     (@SUBCONDITION = 'SECTION' and IDSECTION = 1) 
관련 문제