2013-05-13 5 views
-1

SQL에 다음 IF 문을 쓰고 싶습니다. where 절의 대부분은 구성되어 있지만, 내가 함께 사투를 벌인거야 문 주위의 조건이다 : 간단하게 orwhereelse ifif을 교체하고 paranthesis의 다른 조건을 둘러싸고Where 절에있는 SQL 조건문

if @StuYear = 11 then 

AND (@TeachingGroup = 'Select All') 
AND ([DataCollection] = @DataCollection) 
AND ([Name] = @SubjectName) 
AND (@Subgroup='Select All') 
AND '' = CASE @subjectName WHEN 'English' THEN KS2en WHEN 'Mathematics' THEN KS2ma ELSE KS2av END 
AND Result Not Like '[ABU]%' AND Result <> '' 

else if @StuYear = 10 then 

AND @TeachingGroup Not Like 'Select All' 
AND ([DataCollection] = @DataCollection) 
AND ([Name] = @SubjectName) 
AND ([TeachingGroup] = @TeachingGroup) 
AND @Subgroup='Select All' 
AND '' = CASE @subjectName WHEN 'English' THEN KS2en WHEN 'Mathematics' THEN KS2ma ELSE KS2av END 
AND Result Not Like '[ABC]%' AND Result <> '' 

end if 
+0

그래서 if 문을'where' 및'else if'로 바꾸면 어떻게 될까요? 또는 다른 조건을 paranthesis로 둘러 쌉니? –

+0

@TimSchmelter 안녕 다시 Tim. 문제는 추가적인 무작위 결과를 가져 오는 DataCollection의 값을 변경할 때입니다. 결과 열 이외의 다른 DataCollection의 데이터가 동일하기 때문에 결과가 일치해야합니다. – Matt

+0

'AND 결과가 'A *'가 아님 AND 결과가 'A'가 아님 AND 결과가 'B'가 아님 AND 결과가 'U'가 아님 AND 'Not'가 'Result NOT IN 'A', 'A', 'B', 'U', '') ' –

답변

1

:

... 
where (@StuYear = 11 
AND (@TeachingGroup = 'Select All') 
AND ([DataCollection] = @DataCollection) 
AND ([Name] = @SubjectName) 
AND (@Subgroup='Select All') 
AND '' = CASE @subjectName WHEN 'English' THEN KS2en WHEN 'Mathematics' THEN KS2ma ELSE KS2av END 
AND Result Not Like 'A*' 
AND Result Not Like 'A' 
AND Result Not Like 'B' 
AND Result Not Like 'U' 
AND Result Not Like '') 

OR (@StuYear = 10 
AND @TeachingGroup Not Like 'Select All' 
AND ([DataCollection] = @DataCollection) 
AND ([Name] = @SubjectName) 
AND ([TeachingGroup] = @TeachingGroup) 
AND @Subgroup='Select All' 
AND '' = CASE @subjectName WHEN 'English' THEN KS2en WHEN 'Mathematics' THEN KS2ma ELSE KS2av END 
AND Result Not Like 'A*' 
AND Result Not Like 'A' 
AND Result Not Like 'B' 
AND Result Not Like 'C' 
AND Result Not Like '') 
0

팀의 대답이 도움이되어 올바른 방향으로 나를 가리 킵니다. 그러나 결국 나는 where 절 내에서 연도 조건을 적용하여 문제를 해결했습니다.

where 
    (@StuYear = [stuyear] 
    AND @TeachingGroup = 'Select All' 
    AND [DataCollection] = @DataCollection 
    AND [Name] = @SubjectName 
    AND @Subgroup='Select All' 
    AND '' = CASE @subjectName WHEN 'English' THEN KS2en WHEN 'Mathematics' THEN KS2ma ELSE KS2av END 
    AND ((Result Not Like '[ABU]%' and result not like '' and stuyear='11') 
      or(Result Not Like '[ABC]%' and result not like '' and stuyear='10') 
      or(Result Not Like '[ABCD]%' and stuyear='9')) 
    AND Result <> '') 
OR 
    (@StuYear = [stuyear] 
     AND @TeachingGroup Not Like 'Select All' 
     AND [DataCollection] = @DataCollection 
     AND [Name] = @SubjectName 
     AND [TeachingGroup] = @TeachingGroup 
     AND @Subgroup='Select All' 
     AND '' = CASE @subjectName WHEN 'English' THEN KS2en WHEN 'Mathematics' THEN KS2ma ELSE KS2av END 
     AND ((Result Not Like '[ABU]%' and result not like '' and stuyear='11') 
       or(Result Not Like '[ABC]%' and result not like '' and stuyear='10') 
       or(Result Not Like '[ABCD]%' and stuyear='9')) 
     AND Result <> '')