2013-07-11 6 views
0

SQL Server의 where 절에서 case 문을 사용하려고 시도하고 오류 메시지가 표시됩니다.where 문에서 where 문을 사용하십시오.

WHERE (PRCA.EDLType = 'E') 
AND 
(
NOT 
(
    PRCA.EDLCode IN 
    (
    SELECT EarnCode 
    FROM dbo.udECforUnionRpt 
    WHERE (EDL = 'E') 
) 
) 
) 
AND (PRCM.udMasterCraft IS NOT NULL) 
AND (PRCA.PREndDate BETWEEN @BegPREndDate AND @EndPREndDate) 
AND PRCM.udMasterCraft BETWEEN @BegMasterCraft AND @EndMasterCraft 
AND PRCA.Class BETWEEN @BegClass AND @EndClass 
AND 
(
    CASE WHEN @ExcludePREAPR='Y' THEN UPPER(PRCA.Class) not like upper('%PREAPR%') 
    else PRCA.Class 
) 
END 
) 
ORDER BY PRCA.PRCo 

아마도 PRCA.Class에는 두 가지 조건이 있기 때문에? 아니면 CASE 문을 제대로 쓰지 않아도됩니다.

감사합니다.

+0

무엇을 오류 메시지입니까? – StevieG

+0

메시지 156, 수준 15, 상태 1, 프로 시저 z_UPSPRUnion_test, 줄 82 'like'키워드 근처의 구문이 잘못되었습니다. –

답변

3

사례 명세서를 덤프합니다. 사용 :

AND (UPPER(PRCA.CLASS) not like '%PREAPR%' OR @ExcludePREAPR != 'Y') 
+0

고마워, 작동 –

+0

Finaly if if begin end를 사용하고 두 개의 별도 select 절을 실행합니다. 그러나 finilly 그것은 작동합니다. 도와 줘서 고마워. –