select a.cons_id,sum(a.plate_cap) plate_cap,a.actual_start_Date,a.actual_stop_use_date, 
b.zhh,b.hm,d.amt_ym, (d.t_factor*d.this_read) as xl
from g_tran  a ,e_calc_inv b ,c_cons c,arc_r_data d 
where a.run_status_code='01' 
and a.cons_id<>0 and b.jbdj<>38
and a.cons_id=c.cons_id and b.zhh=c.cons_no
and d.cons_no=c.cons_no and d.read_type_code='111'and plate_cap>=315
and rownum<=10
group by a.cons_id,a.actual_start_Date,
a.actual_stop_use_date,b.zhh,b.hm,d.amt_ym,
d.t_factor,d.this_read  上面的sql语句中,有sum求和,还有2个字段的乘积:(d.t_factor*d.this_read) as xl,其中在group by 字句中也对d.t_factor,d.this_read 进行了分组,不知道这样是不是正确,请高手指教,在线等!!!

解决方案 »

  1.   

    /* Formatted on 2011-6-27 10:09:31 (QP5 v5.114.809.3010) */
      SELECT   a.cons_id,
               SUM (a.plate_cap) plate_cap,
               a.actual_start_Date,
               a.actual_stop_use_date,
               b.zhh,
               b.hm,
               d.amt_ym,
               (d.t_factor * d.this_read) AS xl
        FROM   g_tran a,
               e_calc_inv b,
               c_cons c,
               arc_r_data d
       WHERE       a.run_status_code = '01'
               AND a.cons_id <> 0
               AND b.jbdj <> 38
               AND a.cons_id = c.cons_id
               AND b.zhh = c.cons_no
               AND d.cons_no = c.cons_no
               AND d.read_type_code = '111'
               AND plate_cap >= 315
               AND ROWNUM <= 10
    GROUP BY   a.cons_id,
               a.actual_start_Date,
               a.actual_stop_use_date,
               b.zhh,
               b.hm,
               d.amt_ym,
               (d.t_factor * d.this_read)换这样
      

  2.   

    楼上的好像对的,你的GROUP BY后面少 (d.t_factor * d.this_read)这个字段!