2017-03-17 13 views
0

以下のクエリは、TC.ContractPartner列に0を返していますが、なぜ誰かが説明できますか?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

ここで 'coalesce(tc。[Contact Partner]、0)<> 0'を使用しますが、データに問題がある可能性があります。 –

+0

連絡先が数値でない場合は、両側の空白を削除することもできます。この列のデータ型は? – Anil

答えて

1

andに変更or:?あなたがなりたい場合は

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

私はそれが角かっこと関係があると思ったが、私はまだそれを働かせることができない。 'コード' [contact partner]はnullではありません またはtc。[Contact Partner] <> 0) とtc。[実際の日付]> so.SOCreatedOn so.SOCreatedOn>(tc。[実際の日付から])-90) so.ServiceOrderはヌル 'コード' –

+0

so.ServiceOrderがnullでない場合、 "Contact Partner"にも0が与えられます。次に、両方を除外するには "AND"に変換する必要があります。 。あなたの要件は何ですか? – Anil

関連する問題