select count(m.sales_object) fullnot,
               m.sales_object
          from uniagent_storage_info m,info_agent b
         where  m.active_flag = 0 and b.dept_id = 7
           and m.device_number is null and b.agent_no(+) = ltrim(m.sales_object, 'KD')
         group by m.sales_object原本满足dept_id=7的sales_object是有15个的,但此SQL执行后只有8条记录,我看过了,其中有7条sales-object是因为满足m.device_number is null and m.active_flag = 0的记录数为0,所以数出应该是0条记录,但为什么只显示统计到有记录数的8条sales_object,而其他7条不显示,怎么写才能15条都显示,记录数为0的7条就显示0

解决方案 »

  1.   

    既然不满足条件,都不在结果集里,哪还能count到呢...select count(m.sales_object) fullnot,
                   m.sales_object
              from uniagent_storage_info m,info_agent b
             where  m.active_flag = 0 and b.dept_id = 7
               and m.device_number is null and b.agent_no(+) = ltrim(m.sales_object, 'KD')
             group by m.sales_objectunion allselect 0 fullnot,m.sales_object
           from uniagent_storage_info m,info_agent b
           where b.dept_id = 7 and (m.active_flag <> 0 or m.device_number is not null)
                 b.agent_no(+) = ltrim(m.sales_object, 'KD')
           group by m.sales_object
       
      

  2.   

    这样不知道行不行select sum(case when m.active_flag = 0 and m.device_number is null
                    then 1
                    else 0) fullnot,
           m.sales_object
         from uniagent_storage_info m,info_agent b
         where  and b.dept_id = 7 and b.agent_no(+) = ltrim(m.sales_object, 'KD')
         group by m.sales_object
      

  3.   

    2楼的是可以的,就是不太好理解count里面加条件,而且条件有时也很复杂,写起来就SQL很乱