select a,sum(decode(sign(b),1,b*c,d*c)) from table group by a;

解决方案 »

  1.   

    你的语法是SQL Server语法,按照bzszp的做法即可
      

  2.   

    select a,sum(decode(sign(b),-1,d*c,1,b*c)) from table group by a
      

  3.   

    select a,sum(decode(sign(b),-1,d*c,1,b*c)) from table group by a
      

  4.   

    你需要把SUM放到外面来select a,
           sum(case when b<0 then d*c when b>0 then b*c end)
      from table
     group by a
      

  5.   

    其实Oracle已经提示你了,你把Sum放到里边,那么外边你的Select List中就出现了在聚集函数以外的字段,那么在你用到了聚集函数时,这个字段也必须进行分组。
    你写到里边后,最终的SQL语句类似
    select a,b from table group by a;
    这很明显你也知道不对,只不过 b 处现在换成了另外一个包含 b 字段的表达式而已