select spno,sum(case when type<3 then 1 else 0 end),
  sum(case when type >=3 then 1 else 0 end),sum(1)
from yourTable
group by spno;

解决方案 »

  1.   

    select spno,sum(decode(sign(type-3),-1,1,0) 'type<3',
    sum(decode(sign(type-3),-1,0,1) 'type>=3',
    sum(1) 'type总个数'
    group by spno;
      

  2.   

    select spno,(select count(*) from t3 where type1<3),(select count(*) from t3 where type1>=3) ,count(*) from t3 group by spno;
      

  3.   

    select 
      spno,
      (select count(*) from e where type<3 and e.spno=xx.spno) "TYPE<3(个数)",
      (select count(*) from e where type>2 and e.spno=xx.spno) "TYPE>=3(个数)",
      (select count(*) from e where e.spno=xx.spno) "TYPE(总个数)"
    from e xx group by spno;
      

  4.   

    select  SPNO ,sum(decode(sign(TYPE-3),-1,1,0)),
    sum(decode(sign(TYPE-3),0,1,1,1,0)),count(TYPE)
    from tablename
    group by SPNO 对你有帮助是我最大的快乐
      

  5.   

    select spno,sum(decode(sign(type-3),-1,1,0)) "TYPE<3(个数)",
    sum(decode(sign(type-3),-1,0,1)) "TYPE>=3(个数)",
    sum(1) "TYPE(总个数)" from sn_type
    group by spno;