select c.total_amount as amount1 ,sum(spp.total_amount) as amount2 from contract c,sales_process sp,sales_process_product spp
where c.contract_id=sp.contact_id and sp.sales_process_id=spp.sales_process_id
 group by c.contract_id,c.total_amount

解决方案 »

  1.   

    select 后的字段,必须出现在GROUP BY后!
      

  2.   

    group by c.contract_id 就不能再select 中出现此字段(c.contract_id )之外不统计的字段了
      

  3.   

    改吧,你原来的sql逻辑出错的---〉
    select c.total_amount as amount1 ,
       sum(spp.total_amount) as amount2 
    from contract c,sales_process sp,sales_process_product spp
    where c.contract_id=sp.contact_id 
      and sp.sales_process_id=spp.sales_process_id
    group by c.contract_id, c.total_amount
      

  4.   

    不是吧,那是SUM啊,是AGGREGATE OPORATOR 不需要计算在GROUP FUNCTION内得。
    我觉得只要把c.contract_id 改成c.total_amount 就行了
      

  5.   

    共有4种方法:
    1.
    select c.total_amount as amount1 ,
       sum(spp.total_amount) as amount2 
    from contract c,sales_process sp,sales_process_product spp
    where c.contract_id=sp.contact_id 
      and sp.sales_process_id=spp.sales_process_id
    group by c.contract_id, c.total_amount
    2.
    select c.total_amount as amount1 ,
       sum(spp.total_amount) as amount2 
    from contract c,sales_process sp,sales_process_product spp
    where c.contract_id=sp.contact_id 
      and sp.sales_process_id=spp.sales_process_id
    group by  c.total_amount
    3.
    select c.contract_id,c.total_amount as amount1 ,
       sum(spp.total_amount) as amount2 
    from contract c,sales_process sp,sales_process_product spp
    where c.contract_id=sp.contact_id 
      and sp.sales_process_id=spp.sales_process_id
    group by c.contract_id, c.total_amount
    4.
    select c.contract_id as amount1 ,
       sum(spp.total_amount) as amount2 
    from contract c,sales_process sp,sales_process_product spp
    where c.contract_id=sp.contact_id 
      and sp.sales_process_id=spp.sales_process_id
    group by c.contract_id
    就看你具体情况而定了