Sql server 2012 Sql Server where子句中的大小写或if-else

Sql server 2012 Sql Server where子句中的大小写或if-else,sql-server-2012,case,where-clause,Sql Server 2012,Case,Where Clause,我使用下面的查询,并且在where cause中使用case语句和参数 当report_type='All'时,我需要所有行,不需要选择,但是如果我选择'AR'或'BD',我只需要包含这些相应的语句。然而,当我尝试实现以下逻辑时,它将我和错误抛在了附近,或者不确定我做错了什么。任何帮助都将不胜感激 select * from aging agedet where ( 'All' = {?Report_Type} OR ( CASE WHEN {?Report_type} = 'A

我使用下面的查询,并且在where cause中使用case语句和参数

当report_type='All'时,我需要所有行,不需要选择,但是如果我选择'AR'或'BD',我只需要包含这些相应的语句。然而,当我尝试实现以下逻辑时,它将我和错误抛在了附近,或者不确定我做错了什么。任何帮助都将不胜感激

select * from aging agedet where

( 
 'All' = {?Report_Type} 
 OR 
( 
CASE 
WHEN {?Report_type} = 'AR' THEN 
  (agedet.bkt_type_ha_c <> 5 
  AND 
  agedet.extern_ar_flag_yn <> 'Y' 
  AND 
  agedet.bad_debt_flag_yn <> 'Y') 
  CASE 
  WHEN {?Report_type} = 'Bd' THEN 
    (agedet.bkt_type_ha_c = 5 
    AND 
    agedet.extern_ar_flag_yn = 'Y' 
    AND 
    agedet.bad_debt_flag_yn = 'Y') 
  END ) 
) 
从账龄数据中选择*,其中
( 
'All'={?报告类型}
或
( 
案例
当{?Report_type}='AR'时
(agedet.bkt_类型_ha_c 5
及
agedet.extern\u ar\u flag\u yn'Y'
及
agedet.bad_debt_flag_yn'Y')
案例
当{?Report_type}='Bd'时,则
(agedet.bkt_类型_ha_c=5
及
agedet.extern\u ar\u flag\u yn='Y'
及
agedet.bad_debt_flag_yn='Y')
(完)
)