count()求记录数,这个不会少.
sum()应该没问题.

解决方案 »

  1.   

    那当然--trycount(case when isnull(a,'11') = '11' then Null else 1 end)-
    count(case when isnull(a,'11') = '11' then 1 else Null end),    
      

  2.   

    我要的是null的时候统计为零,a='11'的时候,统计数减一---count(1) - count(case when a = '11' then 1 else null end)
      

  3.   

    应该是这样
    sum(case when a is null then 0
             when a='11' then -1
             else 1
        end) 数量,       
    sum(case when a is null then 0
             when a='11' then -b
             else b
        end) 合计   
      

  4.   


    ----你上面的思路不正确,用这个吧
    select  总个数=count(1)-sum(case when a='11' then -1 else 0 end),
    总和数=sum(a)-sum(case when a='11' then -1 else 0 end)
    from 表
      

  5.   

    select     总个数=count(1)-sum(case when a='11' then -1 else 0 end),
        总和数=sum(a)-sum(case when a='11' then -1 else a end)
    from 表
      

  6.   

    汗,我试验了一下,大家的方法,都不行,不是多统计一,就是少统计一.....
    这个方法:
    sum(case when a is null then 0
             when a='11' then -1
             else 1
        end) 数量,       
    sum(case when a is null then 0
             when a='11' then -b
             else b
        end) 合计  
    少统计一。这个方法:
    select     总个数=count(1)-sum(case when a='11' then -1 else 0 end),
        总和数=sum(a)-sum(case when a='11' then -1 else a end)
    from 表
    多统计一。看起来好像都对,但试验起来却都不对。
      

  7.   

    你的A是什么 类型呀, sum(a)   case   when   a='11'    这两处有点不爽
      

  8.   

    总个数=count(1)-sum(case   when   a='11'   then   -1   else   0   end), ---
    总个数=count(1) + sum(case   when   a='11'   then   -1   else   0   end),改成加,负负得正啦
      

  9.   

      sum(case when processcode is null then 0 when processcode='200000' then -1 else 1 end), 
      sum(case when processcode is null then 0 when processcode='200000' then -RevAmount else RevAmount end)这是我按照大家说的写出来的,processcode是char的,RevAmount是money,而且,我发现,sum在processcode is null的时候,不会sum出0来,而仍然是null。我的验证方法是,我select 出来共五条数据,其中有一条是processcode='200000' ,正确的结果应该就是5-1=4
    用老乌龟的方法,出来的却是3
    用leo_lesley 的方发,出来的却是6。
      

  10.   

    总个数=count(1)-sum(case       when       a='11'       then       -1       else       0       end),   --- 
    总个数=count(1)   +   sum(case       when       a='11'       then       -1       else       0       end), 改成加,负负得正啦