解决方案 »

  1.   

    ORDER BY DECODE(BJ,'一班',1,'二班',2.....),
    DECODE(KM,'语文',1,'数学',2.....)
      

  2.   

    存储过程写这个比较费劲的,而且需要在库内编译,部署过程也非常麻烦,将来更换数据库时还得重写。我用集算器的enum()函数,可以实现枚举对位分组,非常适合这个应用。集算器可以无缝地嵌到数据库和ireport之间,从数据库取出数据计算后以JDBC的形式返回给ireport,ireport就象访问了另一个数据库而已,相当于给报表工具提供了库外存储过程功能。集算器的分发版本是免费的,可以放心用。
      

  3.   

    数据库+集算器+ireport,这样会不会增加报表开发的复杂度?
      

  4.   

    数据库+集算器+ireport,这样会不会增加报表开发的复杂度?会让报表开发更简单且运算性能更高。集算器是一种过程式的程序设计语言,能写出很复杂的运算,比SQL写运算也要容易。运算在报表工具之外做时,性能会更好,因为不带有呈现属性,占用内存也少。当然,如果报表的数据源不是很复杂,就没必要了,直接从DB过来就完了。集算器还是适合报表数据源比较麻烦的情况,比如按固定分组,还有跨库运算啥的。