我们正在从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
答案 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'))