Sql server 在SQL Server 2008 R2中从IIF迁移到CASE语句

Sql server 在SQL Server 2008 R2中从IIF迁移到CASE语句,sql-server,ms-access,Sql Server,Ms Access,我有一个要求,我们必须从MS Access迁移到SQL Server 我们有一个where条款,如: WHERE (((IIf([ATTD_Region_CD]='ALL',True,IIf([ATTD_Region_CD]='NI' And [Region_CD]<>'002' And [Region_CD]<>'007',True,IIf([ATTD_Region_CD]= [Region_CD],True,False))))<>False) 结

我有一个要求,我们必须从MS Access迁移到SQL Server

我们有一个where条款,如:

WHERE (((IIf([ATTD_Region_CD]='ALL',True,IIf([ATTD_Region_CD]='NI' And    
[Region_CD]<>'002' And [Region_CD]<>'007',True,IIf([ATTD_Region_CD]=
[Region_CD],True,False))))<>False)
结束 ) 终止 (错误)

我已将
@Out
声明为

现在执行查询后,我得到一个错误:

“=”附近的语法不正确

我必须检查
CASE
语句的结果是否正确

请任何人在这方面帮助我


提前感谢

似乎不需要
案例
表达式-仅需逻辑:

WHERE [ATTD_Region_CD]='ALL' OR
([ATTD_Region_CD]='NI' And [Region_CD] not in ('002','007')) OR
([ATTD_Region_CD]=[Region_CD])

顺便说一句,虽然您没有使用特定版本,但SQL Server 2012-Forwards中提供了do note供您参考。对我有用。
WHERE [ATTD_Region_CD]='ALL' OR
([ATTD_Region_CD]='NI' And [Region_CD] not in ('002','007')) OR
([ATTD_Region_CD]=[Region_CD])