先有一需求,某运营商要统计某地区的错误码情况,要求展示如下效果circle     13   14  15  16   17    --错误码类型beijing    10   10  10   0    0 
shanghai   10   10  10  10   10 
表结构如下
area  地区:如 上海,北京,南京等
error 错误类型 不固定,如上海可能有13,14,15,16,17,而北京只有13,14,15,如果北京没有的话就补0示例如下create table lhj_test (area  varchar2(10),error varchar2(10), coun   number )
insert into lhj_test values ('shanghai','13',10);
insert into lhj_test values ('shanghai','14',10);
insert into lhj_test values ('shanghai','15',10);
insert into lhj_test values ('shanghai','16',10);
insert into lhj_test values ('shanghai','17',10);
insert into lhj_test values ('beijing','13',10);
insert into lhj_test values ('beijing','14',10);
insert into lhj_test values ('beijing','15',10);这里的error列举如上,具体个数不详,而且不固定.
输出样式--地区
circle     13   14  15  16   17    --错误码类型beijing    10   10  10   0    0 
shanghai   10   10  10  10   10 请大侠指教,多谢

解决方案 »

  1.   

    你看看这个SQl有没有帮助
    http://blog.csdn.net/fatfoxz/archive/2010/01/06/5144680.aspx
      

  2.   

    select area ,
      max(case error when '13' then coun else 0 end) ,
      max(case error when '14' then coun else 0 end) ,
      max(case error when '15' then coun else 0 end) ,
      max(case error when '16' then coun else 0 end) ,
      max(case error when '17' then coun else 0 end) 
    from lhj_test
    group by area
      

  3.   

    你看看这个SQl有没有帮助 
    http://blog.csdn.net/fatfoxz/archive/2010/01/06/5144680.aspx--能否详解一下
      

  4.   

    SQL codeselect area ,
      max(case error when '13' then coun else 0 end) ,
      max(case error when '14' then coun else 0 end) ,
      max(case error when '15' then coun else 0 end) ,
      max(case error when '16' then coun else 0 end) ,
      max(case error when '17' then coun else 0 end) 
    from lhj_test
    group by area--其中的error字段的13,14,15,16,17 不但个数不固定,数字也不固定
      

  5.   

    http://topic.csdn.net/u/20091019/11/67cd55a3-3f42-4db7-a3f8-91dd52a913cd.html
    稍微修改下。max-->nvl(sum(),0)
     open c1 for 'select ...后面可以添上order by ..