不是不能使用decode,而是因为你的列是不确定的,需要循环来拚接出sql,然后才能得到你需要的结果。这个循环中的语句是要使用decode的。

解决方案 »

  1.   

    我这里没有oracle的任何环境,只有db2,只有你自己动手了--正好练手。
      

  2.   

    如果你的代理商不是很多的话,如果多了就不行可以用union all来实现,以前我也这样一个问题,他非要用你这种格式的报表
    select 区号,sum(代理商1) 代理商1,sum(代理商2) 代理商2,sum(代理商3) 代理商3,...from 
    (
    select 区号,sum(订单数) 代理商1,0 代理商2,0 代理商3 ... from tbl_order
     where 代理商号=代理商号1
    group by 区号
    union all
    select 区号,0 代理商1,sum(订单数) 代理商2,0 代理商3 ... from tbl_order
     where 代理商号=代理商号2
    group by 区号
    union all
    select 区号,0 代理商1,0 代理商2,sum(订单数)  代理商3 ... from tbl_order where 代理商号=代理商号3
    group by 区号
    union all
    ......
    )group by 区号
      

  3.   

    另外还可以用开发语言结合数据库来解决,就是用循环语句来读取代理商,
    在动态来实现查询,我觉得用delphi不是很难的
      

  4.   

    即使是代理商很多的话,一样可以用一条 sql 写出,我见过,等我找找,请等待。
      

  5.   

    为什么非得用一句sql写出? 这样sql看起来晦涩难懂。 我建议用存储过程,里面可以用循环, 也可以自定义一个临时结果表, 为你进一步进行别的统计探索出一个统一的统计模式, 起到事办功倍的作用。
      

  6.   

    orakiv(殷商人) :这么厉害?我等着看呢