2017-12-08 6 views
0

これは信じられないほど単純なようですが、次のクエリが間違った数値を返す理由を理解できません。不適切な金額を返すSQLのSUM

私はデータセットをExcelに入れて、検証するためだけに計算を行いました。 m1の合計は36785です。領域900と995を削除すると、18653になります。このクエリを見ると、欠陥は何ですか?私はそれをオフ()を残す場合は、以下のように、計算値は1716093.クエリです36785.

select sum(m1) 
from dbo.sizeclassreportgov 
where own='10' and (area !='900' or area != '995'); 

答えて

1

の値を返します。私は、あなたが探していることになると思う。

select sum(m1) 
from dbo.sizeclassreportgov 
where own='10' and area not in ('900', '995'); 

area !='900' or area != '995'は、常にareaNULLでない限り、真と評価されます。

areaがどのNULL値が含まれている場合、あなたは(area not in ('900', '995') or area is null)を使用する必要があるだろう。)

+0

なぜエリア!= '900' またはエリア!= '995' は常に真と評価されますか? –

+0

助けてくれてありがとう。それは完璧に働いた。 –

+0

これは 'OR'条件であるため、いずれかの条件が真の評価のために行います。 '' 900 '!=' 995''なので '' 900''はまだtrueを返すでしょう。あなたがカッコを取り除いて、単に「OR」ではなく「AND」にした場合、それも機能します。 –

関連する問題