2017-03-17 31 views
0

下面的查詢仍然返回0的TC.ContractPartner列有人可以解釋爲什麼?SQL Server和/或查詢

我用以防萬一 '0' 嘗試零爲文本

select distinct tc.ID 
, tc.[Contact Partner] 
, so.BusinessPartnerNumber 
, tc.[Actual Date From] 
, SO.ServiceOrder 
, SO.ServiceProduct 
, so.SOCreatedOn 

from AB.TradComplaints_Temp as TC 

left Join main.Tbl_ServiceOrder as SO on SO.BusinessPartnerNumber = tc.[Contact Partner] 

where tc.[Contact Partner] is not null 
and tc.[Actual Date From] > so.SOCreatedOn 
and so.SOCreatedOn > (tc.[Actual Date From]-90) 
and so.ServiceOrder is not null 

or tc.[Contact Partner] <> 0 
and tc.[Actual Date From] > so.SOCreatedOn 
and so.SOCreatedOn > (tc.[Actual Date From]-90) 
and so.ServiceOrder is not null 
order by tc.ID 
+0

只需使用'where coalesce(tc。[Contact Partner],0)<> 0',但也許您的數據有問題。 –

+0

如果聯繫合作伙伴不是數字,那麼您還可以查看修剪雙方的空格,此列的數據類型是什麼? – Anil

回答

1

變化orand

and so.ServiceOrder is not null 
and tc.[Contact Partner] <> 0 
0

如果你想要得到的時候

so.ServiceOrder is not null or tc.[Contact Partner] <> 0  

然後將這些論文分組在文件夾中

select distinct tc.ID 
, tc.[Contact Partner] 
, so.BusinessPartnerNumber 
, tc.[Actual Date From] 
, SO.ServiceOrder 
, SO.ServiceProduct 
, so.SOCreatedOn 

from AB.TradComplaints_Temp as TC 

left Join main.Tbl_ServiceOrder as SO on SO.BusinessPartnerNumber = tc.[Contact Partner] 

where tc.[Contact Partner] is not null 
and tc.[Actual Date From] > so.SOCreatedOn 
and so.SOCreatedOn > (tc.[Actual Date From]-90) 
and (so.ServiceOrder is not null 

or RTRIM(LTRIM(tc.[Contact Partner])) <> '0') 
and tc.[Actual Date From] > so.SOCreatedOn 
and so.SOCreatedOn > (tc.[Actual Date From]-90) 
and so.ServiceOrder is not null 
order by tc.ID 
+0

我覺得這是與括號做的事情,但我仍然無法得到它的工作。 '代碼'其中(tc。[聯繫合作伙伴]不爲空 或tc。[聯繫合作伙伴] <> 0) 和tc。[實際日期來自]> so.SOCreatedOn 等等。有待解決的問題>(tc。[Actual日期從] -90) 等等.ServiceOrder不是nul'code' –

+0

當so.ServiceOrder不爲null時,它也會給「聯繫夥伴」爲0.然後,您需要轉換或轉換爲「AND」以排除兩者。你的要求是什麼? – Anil