sb_run_rec_s.dt >= to_date('2001/01/01','yyyy/mm/dd') and sb_run_rec_s.dt <= to_date('2003/01/01','yyyy/mm/dd')
日期是这样表达

解决方案 »

  1.   

    oracle 的日期格式是显示的,不管是从字符串转换成日期,还是从日期转换成字符串,都必须显式指定格式
      

  2.   

    也不对阿,提示:不是group表达式
      

  3.   

    加上
    Group by substr(rl_dept_cd.sys_cd_nm,1,6),   
    trunc(sb_run_rec_s.dt,'mm')
      

  4.   

    加上
    Group by substr(rl_dept_cd.sys_cd_nm,1,6),   
    trunc(sb_run_rec_s.dt,'mm')
      

  5.   

    HAVING 的条件没有必要,grouop
    SELECT substr(rl_dept_cd.sys_cd_nm,1,6) as dept_nm,   
           trunc(sb_run_rec_s.dt,'mm') as dt,
           sum(sb_run_rec_s.run_tm1) / 
               (sum(sb_run_rec_s.stop_tm) + sum(sb_run_rec_s.run_tm1)) as use_lv
        FROM rl_dept_cd,   
             sb_equi_acc,   
             sb_run_rec_s  
       WHERE sb_run_rec_s.equi_id = sb_equi_acc.id_key 
         and sb_run_rec_s.team_id = rl_dept_cd.sys_id_key 
         and sb_run_rec_s.dt >= to_date(2001/01/01)
         and sb_run_rec_s.dt <= to_date(2003/02/02)
    group by trunc(sb_run_rec_s.dt,'mm'),
             substr(rl_dept_cd.sys_lev_cd,1,6);
      

  6.   

    上面没有编辑完就不能修改了,补:SELECT substr(rl_dept_cd.sys_cd_nm,1,6) as dept_nm,   
           trunc(sb_run_rec_s.dt,'mm') as dt,
           sum(sb_run_rec_s.run_tm1) / 
               (sum(sb_run_rec_s.stop_tm) + sum(sb_run_rec_s.run_tm1)) as use_lv
        FROM rl_dept_cd,   
             sb_equi_acc,   
             sb_run_rec_s  
       WHERE sb_run_rec_s.equi_id = sb_equi_acc.id_key 
         and sb_run_rec_s.team_id = rl_dept_cd.sys_id_key 
         and sb_run_rec_s.dt >= to_date(2001/01/01)
         and sb_run_rec_s.dt <= to_date(2003/02/02)
    group by trunc(sb_run_rec_s.dt,'mm'),
             substr(rl_dept_cd.sys_cd_nm,1,6)
             substr(rl_dept_cd.sys_lev_cd,1,6);/*如没有必要,本行可去掉!*/