解决方案 »

  1.   

    select userid,
           nvl((select count(t.id) from process t where t.userid = t1.userid),
               0) totalNum,
           nvl((select count(t.id)
                 from process t
                where t.process_result = 1
                  and t.userid = t1.userid),
               0) passNum,
           nvl((select count(t.id)
                 from process t
                where t.process_result = 2
                  and t.userid = t1.userid),
               0) nullNum,
           nvl((select count(t.id)
                 from process t
                where t.process_result = 3
                  and t.userid = t1.userid),
               0) uploadNum
      from process t1;
      

  2.   

    select userid,
           nvl((select count(t.id) from process t where t.userid = t1.userid),
               0) totalNum,
           nvl((select count(t.id)
                 from process t
                where t.process_result = 1
                  and t.userid = t1.userid),
               0) passNum,
           nvl((select count(t.id)
                 from process t
                where t.process_result = 2
                  and t.userid = t1.userid),
               0) nullNum,
           nvl((select count(t.id)
                 from process t
                where t.process_result = 3
                  and t.userid = t1.userid),
               0) uploadNum
      from process t1;
    多谢大神,搞定了!
      

  3.   

    比较合理的应该写成
    select user_id,count(1) totalNum,count(case process_result when 1 then 1 end) passNum,
    count(case process_result when 2 then 1 end) nullNum,
    count(case process_result when 3 then 1 end) uploadNum
    from process t
    group by t.user_id