2015-10-29 38 views
0

我們正在從MS Access遷移到SQL Server。我們在這裏顯示它有WHERE子句的查詢:如何將Access WHERE子句轉換爲SQL Server

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 

我的數據是不同的,則原來的一個。

請提出任何解決方案,關於我在哪裏做錯了。

在此先感謝。

問候 阿希什Bisht

回答

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'))