如何将Access WHERE子句转换为SQL Server

时间:2015-10-29 09:46:16

标签: sql-server-2008 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)))) AND ((SEND_ViaDefault = 'Email') OR (SEND_ViaDefault = 'Fax'));

我已经使用我的SQL Server WHERE子句完成了以下操作:

Where (0=
case when ATTD_Region_CD ='ALL'
then 1
else
( 
       case
       when 
       (
       ATTD_Region_CD='NI' and Region_CD not in ('002','007')
       )
       then 1 
       else 
            (
           case when     
(ATTD_Region_CD=Region_CD) 
           then 1
           else 
           0 
           end
             )
       end
)      
end

我的数据与原始数据不同。

请在我做错的地方建议任何解决方案。

提前致谢。

此致 Ashish Bisht

1 个答案:

答案 0 :(得分:1)

相当于:

WHERE (
         ATTD_Region_CD = 'ALL' OR 
         (ATTD_Region_CD = 'NI' AND Region_CD <> '002' AND Region_CD <> '007') OR 
         ATTD_Region_CD = Region_CD
      ) AND
      (
         SEND_ViaDefault = 'Email' OR SEND_ViaDefault = 'Fax'
      )

根据您的问题,您遇到的主要错误是Where (0=。您应该与1进行比较。你错过了谓词的最后一部分((SEND_ViaDefault = 'Email') OR (SEND_ViaDefault = 'Fax'))