Select SQL中的SUM返回的金额不正确

Select SQL中的SUM返回的金额不正确,select,sum,ssms,where,Select,Sum,Ssms,Where,这看起来非常简单,但我不明白为什么下面的查询返回的数字不正确 我已经将数据集放入excel并进行了计算,只是为了验证。m1的总和是36785。当我移除区域900和995时。总共是18653年。从这个查询来看,缺陷是什么?如果我不使用它,计算的值是1716093。如下所示的查询返回值36785 select sum(m1) from dbo.sizeclassreportgov where own='10' and (area !='900' or area != '995'); 我想你要找的是

这看起来非常简单,但我不明白为什么下面的查询返回的数字不正确

我已经将数据集放入excel并进行了计算,只是为了验证。m1的总和是36785。当我移除区域900和995时。总共是18653年。从这个查询来看,缺陷是什么?如果我不使用它,计算的值是1716093。如下所示的查询返回值36785

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

我想你要找的是:

select sum(m1)
from dbo.sizeclassreportgov
where own='10' and area not in ('900', '995');
面积!='900'或面积!='995'将始终计算为true,除非面积为NULL


如果区域确实包含任何空值,则需要使用“900”、“995”中没有的区域或区域为空。

为什么区域!='900'或面积!='995“总是求值为真?这是因为它是一个OR条件,所以任何一个条件都适用于真正的求值。”900' != '995',因此“900”仍将返回true。如果你去掉括号,把它改成and而不是OR,那也行。