SELECT   a.sdate
        ,a.stime
        ,a.bsc_name
        ,a.cell_id    
        ,decode(dl_qual_2,0,0,dl_qual_1/dl_qual_2)                        yao                                                            
FROM     z_coding  a 
GROUP BY a.sdate
        ,a.stime
        ,a.bsc_name
        ,a.cell_id;

解决方案 »

  1.   

    的确哦 没有用到聚合函数呢  如果想用group by 去重复的话可以再前面加distinct
      

  2.   

    decode(dl_qual_2,0,0,dl_qual_1/dl_qual_2)   -- 其中的dl_qual_1,dl_qual_2既没有出现在GROUP BY列中也没有用聚合函数
      

  3.   

    谢谢大家,我还是不太懂,这修改成这样吗?
    distinct(decode(dl_qual_2,0,0,dl_qual_1/dl_qual_2))    
      

  4.   

    DROP TABLE z_coding;
    DROP TABLE z_report;   /*coding_scheme table*/
    create table z_coding tablespace temp as
    SELECT   to_char(period_start_time,'yyyymmdd')                                                                             Sdate
            ,to_char(period_start_time,'hh24')                                                                                 Stime
            ,bsc.name                                                                                                              bsc_name
            ,bts.cell_id                                                                                                           cell_id
            ,sum(freq_DL_qual0+freq_DL_qual1+freq_DL_qual2+freq_DL_qual3+freq_DL_qual4+freq_DL_qual5)                              dl_qual_1
            ,sum(freq_DL_qual0+freq_DL_qual1+freq_DL_qual2+freq_DL_qual3+freq_DL_qual4+freq_DL_qual5+freq_DL_qual6+freq_DL_qual7)  dl_qual_2
    FROM  p_nbsc_rx_qual r
         ,c_bts bts
         ,objects bsc
    WHERE  r.bts_int_id =bts.int_id 
           and bsc.int_id = r.int_id 
           and bts.conf_name = '<ACTUAL>' and bsc.name like 'XYBSC%'
           and to_char(r.period_start_time, 'yyyymmdd')>=&starttime
           and to_char(r.period_start_time, 'yyyymmdd')<=&endtime
        /*   and to_char(r.period_start_time, 'hh24') in ('22')*/
    GROUP BY  to_char(period_start_time,'yyyymmdd')
             ,to_char(period_start_time,'hh24')
             ,bsc.name
             ,bts.cell_id; 
    /*final report table */       
    create table z_report tablespace temp as 
    SELECT   a.sdate
            ,a.stime
            ,a.bsc_name
            ,a.cell_id    
            ,decode(dl_qual_2,0,0,dl_qual_1/dl_qual_2)                        yao                                                            
    FROM     z_coding  a 
    /*where    a.dl_qual_2>0   */    
    GROUP BY a.sdate
            ,a.stime
            ,a.bsc_name
            ,a.cell_id;
         
            
    SELECT  * FROM   z_report ;    
    源代码
      

  5.   

    我想要的结果是:dl_qual_1/dl_qual_2,但dl_qual_2有等于0 的,要把这一部分的值弄成0,所以用了decode函数,可运行就报错了,谢谢大家
      

  6.   

    --照你这段代码的逻辑看来,把GROUP BY去掉即可:
    CREATE TABLE Z_REPORT TABLESPACE TEMP AS 
    SELECT  A.SDATE 
            ,A.STIME 
            ,A.BSC_NAME 
            ,A.CELL_ID    
            ,DECODE(DL_QUAL_2,0,0,DL_QUAL_1/DL_QUAL_2) YAO                                                            
    FROM    Z_CODING  A 
    /*WHERE    A.DL_QUAL_2>0  */;