问题很简单,假只有一张表  里面有个日期字段,对应的一些数据,
  条件:传入一个日期:
  如果 传的是一个年份,如2009就要把当年的数据查出来,不是统一查出来,要分12 张报表显示出来,每一个月对应一张报表,  如输的是年月,  如2009-01  就只要显示一张报表,也就是2009年1月的数据显示出来。如果输的是2010 那就只查出今年过的月份,也就是11张报表,
    哪位高手 给点意见。

解决方案 »

  1.   

    怎么个分别处理法,难道写多个SQL来处理
      

  2.   

    貌似写多个SQL语句是思路最清晰的办法!
      

  3.   

    select to_char(t.日期字段,'yyyyMM') checkMonth,   t.* from your_table t  order by t.日期字段;查出来循环根据这个 checkMonth 字段可以将checkMonth相同的数据 放在一个List中最后得到多个这样的List,一个list就是一个月份的数据伪代码如下:
            List list = 查询的总结果集合;
            Map map = new LinkedHashMap();
            for (int i = 0; i < list.size(); i++) {
              Object t = list.get(i);
              if(!map.containsKey(t.getCheckMonth())){
                map.put(t.getCheckMonth(),new ArrayList());
              }
              ((List)map.get(t.getCheckMonth())).add(t);
            }
            
            遍历这个map就会得到 各个月份的数据了个人认为 多次操作数据库消耗太大 
      

  4.   

    先判断输入的位数,再通过位数来确定需要使用SQL语句!
      

  5.   

    根据输入的数字来拼写sql语句
    if(带月份){}else{
       if(当前年){   }else{
       
       }
    }
    大致不就这三种情况么
      

  6.   

      有人用过velocity没??