`
tongliqiang
  • 浏览: 41103 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

ORA-00937: 不是单组分组函数

阅读更多

今天在java中拼接sql时犯了一个很低级的错误,sql语句拼接好以后,查询总是报ORA-00937: 不是单组分组函数,检查了好久都没没有找到错误的原因,在控制台打印的sql语句放到pl/SQL中执行也没错,但死活在junit测试的时候报ORA-00937的错误,忽然灵感来了,发现原来是我往dao中设置拼接好的sql语句不完整,group by子句和order子句都没有拼接到sql语句中。

 

代码如下: 灰色背景的语句应该在绿色背景语句下

this.getDAO();
   log4j.info(LogUtil.cSqlLogString("数据库连接:",dao.getConnection().toString()));

   StringBuffer lsSQL = new StringBuffer();
   
   List<Object> laParameter=new ArrayList<Object>();
   //开始时间
   String btimecode = "";
   //结束时间
   String etimecode = "";
   if(!"".equals(timecode)&&null!=timecode){
    if(timecode.indexOf(",")!=-1){
     btimecode=timecode.split(",")[0];
     etimecode=timecode.split(",")[1];
     btimecode=ZztDateUtil.getWeekBegin(Integer.valueOf(btimecode.substring(0,4)), Integer.valueOf(btimecode.substring(4,6)));
     etimecode=ZztDateUtil.getWeekBegin(Integer.valueOf(etimecode.substring(0,4)), Integer.valueOf(etimecode.substring(4,6)));
    }else{
     btimecode=ZztDateUtil.getWeekBegin(Integer.valueOf(timecode.substring(0,4)), Integer.valueOf(timecode.substring(4,2)));
    }
   }
     
   lsSQL.append(getWwtpSQL());
   
         //开始时间不为空时
   if(!"".equals(btimecode)&&null!=btimecode){
    laParameter.add(btimecode);
    lsSQL.append("\n  and  begintime>=to_date(?,'yyyy-MM-dd')");
   }
   //结束时间不为空时
   if(!"".equals(etimecode)&&null!=etimecode){
    laParameter.add(etimecode);
    lsSQL.append("\n  and  begintime<=to_date(?,'yyyy-MM-dd')");
   }
   dao.setSQL(lsSQL.toString(), BaseDAO.DAOSQL,true);
   
   lsSQL.append("\n  group by regioncode,regionname                                                               ");
   lsSQL.append("\n  order by regioncode                                                                ");
   

   int liIndex=1;
   for(int liLoop = 0; liLoop < laParameter.size(); liLoop++){
    dao.setParameterValue(liIndex++,laParameter.get(liLoop));
         }
   
   log4j.info(LogUtil.cSqlLogString("污水处理厂总量按直辖市汇总-"+btimecode+"至"+etimecode+":",lsSQL.toString()));
   
   
         lRetMsg = dao.executeQuery(SysConfig.COMMON_DHO);

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics