0

SQL Server の where 句で case ステートメントを使用しようとすると、エラー メッセージが表示されます。

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 に 2 つの条件があるためでしょうか? または、CASEステートメントを正しく記述していません。

4

1 に答える 1

3

case ステートメントをダンプします。これを使って:

AND (UPPER(PRCA.CLASS) not like '%PREAPR%' OR @ExcludePREAPR != 'Y')
于 2013-07-11T15:02:02.710 に答える