where子句有什么问题

时间:2016-06-30 09:55:08

标签: sql-server sql-server-2008 sum where where-clause

我在下面选择:

select sum(col1) as sum1 
from table1
where col2 = 'A' and col3 in ('AA','BB')

现在我做的时候:

select sum(col1) as sum2 
from table1
where col2 <> 'A' and col3 not in ('AA','BB')

并尝试添加: sum1 + sum2 ,我应该得到(col1)的总和。但是缺少一些价值。你知道为什么吗?

enter image description here

2 个答案:

答案 0 :(得分:2)

这两个查询并不是完全互补的,您缺少NULL个值来启动。您还缺少WHERE col2 = 'A' AND col3 NOT IN ('AA', 'BB')WHERE col2 <> 'A' and col3 IN ('AA', 'BB')

就像我说你也遗漏了NULL,你可以这样检查:WHERE col2 IS NULL OR col3 IS NULL

编辑请求的是第一个给定的备用查询:

select  sum(col1) as sum2 
from    table1
where   col2 <> 'A' 
     OR col3 not in ('AA','BB')
     OR col2 IS NULL
     OR col3 IS NULL

答案 1 :(得分:0)

因为可能存在col2 =&#39; A&#39;和col3不在(&#39; AA&#39;,&#39; BB&#39;) 要么 col2&lt;&gt; &#39; A&#39;和col3 in(&#39; AA&#39;,&#39; BB&#39;)