我运行如下的语句:
select count(*) from serv4
union all
SELECT count(*) FROM SERV4 WHERE CUST_GP in ('sk','dk')
union all
SELECT count(*) FROM SERV4 WHERE CUST_GP!='sk' AND CUST_GP!='dk'
----------- 
62123
7748
0(所影响的行数为 3 行)
--------------------------
问题来了,既然serv4表的所有记录条数是62123,而符合cust_gp 为 gk 或 dk的值的记录条数为7748,那么cust_gp 的值 不为sk并且不为dk的值应该等于 62123-7748=54375,可结果却等于0 ,实在是奇怪!

解决方案 »

  1.   

    select count(*) from serv4
    union all
    SELECT count(*) FROM SERV4 WHERE CUST_GP in ('sk','dk')
    union all
    --SELECT count(*) FROM SERV4 WHERE CUST_GP!='sk' AND CUST_GP!='dk'
    SELECT count(*) FROM SERV4 WHERE CUST_GP not in ('sk','dk')
      

  2.   

    楼上的,我根据你的改了,用 not in 结果还是一样的
      

  3.   

    你表里面的CUST_GP 字段是不是除了'sk','dk'其他都是null
      

  4.   

    没错,就是这样,CUST_GP字段除了SK,DK 就是 NULL 了
      

  5.   

    我想你应该知道原因了
    查询前设置一下,不然你所有的东西跟null比较返回的都是nullSET ANSI_NULLS OFF
    GO
    select count(*) from serv4
    union all
    SELECT count(*) FROM SERV4 WHERE CUST_GP in ('sk','dk')
    union all
    SELECT count(*) FROM SERV4 WHERE CUST_GP!='sk' AND CUST_GP!='dk'
    SET ANSI_NULLS ON
    GO
      

  6.   

    哦? 我还真不太明白,为虾米值为null的就得不到?
    应该怎样设置啊?