2015-10-29 2 views
0

Мы переносимся с MS Access на SQL Server. У нас есть запрос, который имеет WHERE положение показано здесь:Как преобразовать предложение 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 

)

Мои данные отличаются, то оригинал один.

Пожалуйста, предложите любое решение, касающееся этого, где я делаю неправильно.

Заранее спасибо.

С уважением Ashish 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'))

Смежные вопросы