2017-02-10 134 views
0

当我执行唯一工作的是Zipcodes。它不会给我的服务日期大于08/01/16或我的结算提供商。我不知道为什么。为什么我的代码被忽略?

SELECT Name, BirthDate, Address1, Address2, City, StateProvince, ZipCode, BillingProviderID, ServiceDate, ChargeCatID 
FROM dbo.PbrChargeTransactions 
WHERE ChargeCatID = 'EM' 
AND ServiceDate >= '08/01/16' 
AND BillingProviderID IN ('AAD.FD','DSD.DFD','ASDF.DD') 
AND ZipCode Like '68730%' 
OR ZipCode Like '68792%' 
OR ZipCode Like '68739%' 
OR ZipCode Like '68718%' 
OR ZipCode Like '57069%' 
OR ZipCode Like '57031%' 
OR ZipCode Like '57078%' 
OR ZipCode Like '57066%' 
OR ZipCode Like '57063%' 
OR ZipCode Like '57037%' 
OR ZipCode Like '57073%' 
OR ZipCode Like '57029%' 
OR ZipCode Like '57070%' 
ORDER BY Name 
+2

你需要一些括号:现在,你得到(ChargeCatID ='EM'和ServiceDate> = '08/01/16'和BillignProviderID IN(...)和ZipCode Like'68730%')或者(ZipCode像'68792%')或(ZipCode赞...)。显然,那不是你想要的。 – Martha

回答

1

运算符优先级:“和”的绑定比“或”更紧密。也就是说,只有第一个邮政编码比较用您的“和”条件的其余部分进行评估。其余的都是'OR',如果他们匹配,你会得到记录。

试试这个:

SELECT Name, BirthDate, Address1, Address2, City, StateProvince, ZipCode,  BillingProviderID, ServiceDate, ChargeCatID 
FROM dbo.PbrChargeTransactions 
WHERE ChargeCatID = 'EM' 
AND ServiceDate >= '08/01/16' 
AND BillingProviderID IN ('AAD.FD','DSD.DFD','ASDF.DD') 
AND (ZipCode Like '68730%' 
OR ZipCode Like '68792%' 
OR ZipCode Like '68739%' 
OR ZipCode Like '68718%' 
OR ZipCode Like '57069%' 
OR ZipCode Like '57031%' 
OR ZipCode Like '57078%' 
OR ZipCode Like '57066%' 
OR ZipCode Like '57063%' 
OR ZipCode Like '57037%' 
OR ZipCode Like '57073%' 
OR ZipCode Like '57029%' 
OR ZipCode Like '57070%' 
) 
ORDER BY Name 
0

您可以使用(...)作为n8wrl表演或以下,我认为会更快。

SELECT Name, BirthDate, Address1, Address2, City, StateProvince, ZipCode, BillingProviderID, ServiceDate, ChargeCatID 
FROM dbo.PbrChargeTransactions 
WHERE ChargeCatID = 'EM' 
AND ServiceDate >= '08/01/16' 
AND BillingProviderID IN ('AAD.FD','DSD.DFD','ASDF.DD') 
AND LEFT(ZipCode,5) in ('68730','68792','68739','68718','57069','57031', '57078','57066','57063','57037','57073','57029','57070') 
ORDER BY Name 
0

这个问题可能是因为你错过了一些括号。请注意的precedence of operators

如果你写

A AND B AND zip1 OR zip2 OR zip3 

这等于

((A AND B) AND zip1) OR zip2 OR zip3 

我想你打算写

A AND B AND (zip1 OR zip2 OR zip3) 

其中A,B,ZIP1 ,...是布尔条件,如zip LIKE '12345%'