这样应该可以吧!
select a.name ,
             sum(decode(status,'1',1,0)) as state1,
             sum(decode(status,'2',1,0)) as state2,
             sum(decode(status,'3',1,0)) as state3,
             sum(decode(status,'4',1,0)) as state4
             from atest a  group by a.nameSQL> select a.name ,
  2               sum(decode(status,'1',1,0)) as state1,
  3               sum(decode(status,'2',1,0)) as state2,
  4               sum(decode(status,'3',1,0)) as state3,
  5               sum(decode(status,'4',1,0)) as state4
  6               from atest a  group by a.name
  7  ;NAME                     STATE1     STATE2     STATE3     STATE4
-------------------- ---------- ---------- ---------- ----------
name1                         0          2          3          2

解决方案 »

  1.   

    select name ,
           sum(decode(status,'1',1,0)) as state1,
           sum(decode(status,'2',1,0)) as state2,
           sum(decode(status,'3',1,0)) as state3,
           sum(decode(status,'4',1,0)) as state4
    from tbname
    group by name
      

  2.   

    sum(decode(status,'1',1,0)) as state1
    如果状态state没有为 1 得数据,
    这样我就不能查到数据,
    我现在需要所有得数据。