select dydj,
sum(case when qxxz='危急' and xcbz='已消缺' then 1 else 0 end)qxxz(危急已消缺数),
...
from A;

解决方案 »

  1.   

    sorry:select dydj,
    sum(case when qxxz='危急' and xcbz='已消缺' then 1 else 0 end)qxxz(危急已消缺数),
    sum(case when qxxz='重大' then 1 else 0 end)qxxz(重大总数),
    sum(case when qxxz='重大' and xcbz='已消缺' then 1 else 0 end)qxxz(重大已消缺数),
    sum(case when qxxz='一般' then 1 else 0 end)qxxz(一般总数),
    sum(case when qxxz='一般' and xcbz='已消缺' then 1 else 0 end)qxxz(一般已消缺数),
    (sum(decode(xcbz,'已消缺',1,0))/sum(decode(xcbz,null,0,1))qxxz(合计消缺率%)
    from A;
    group by dydj;
      

  2.   

    楼上的有错呀,ORA-00907: 缺少右括号
      

  3.   

    select dydj,
    sum(case when qxxz='危急' and xcbz='已消缺' then 1 else 0 end)qxxz(危急已消缺数),
    sum(case when qxxz='重大' then 1 else 0 end)qxxz(重大总数),
    sum(case when qxxz='重大' and xcbz='已消缺' then 1 else 0 end)qxxz(重大已消缺数),
    sum(case when qxxz='一般' then 1 else 0 end)qxxz(一般总数),
    sum(case when qxxz='一般' and xcbz='已消缺' then 1 else 0 end)qxxz(一般已消缺数),
    (sum(decode(xcbz,'已消缺',1,0))/sum(decode(xcbz,null,0,1)))qxxz(合计消缺率%)
    from A;
    group by dydj;
      

  4.   

    楼上的有错呀,ORA-00907: 缺少右括号
      

  5.   

    select dydj,
    sum(decode(qxxz,'危急',1,0)),sum(decode(qxxz,'危急',decode(xcbz,'已消缺',1,0),0)),
    sum(decode(qxxz,'重大',1,0)),sum(decode(qxxz,'重大',decode(xcbz,'已消缺',1,0),0)),
    sum(decode(qxxz,'一般',1,0)),sum(decode(qxxz,'一般',decode(xcbz,'已消缺',1,0),0)),
    sum(decode(xcbz,'已消缺',1,0))/sum(xcbz) 
     from A group by dydj 
     
      

  6.   

    select dydj,
    sum(decode(qxxz,'危急',1,0)) wjzs,
    sum(decode(qxxz,'危急',decode(xcbz,'已消除',1,0),0)) wjyxc,
    sum(decode(qxxz,'重大',decode(xcbz,'已消除',1,0),0)) zdyxc,
    sum(decode(qxxz,'一般',decode(xcbz,'已消除',1,0),0)) ybyxc,
    sum(decode(xcbz,'已消除',1,0))/count(*)*100 xql
    from zzz
    group by dydj;