2011-08-09 114 views
0
SELECT SUM (e.quantity) AS quantity 
    ,e.tran_id 
    ,e.SEQUENCE 
    ,MAX (e.veh) AS veh 
    ,a.DATE AS DATE 
    ,a.aloc_sequence 
    ,CASE 
    WHEN a.currency = 'USD' THEN e.COST 
    ELSE e.COST * getrate ('ABC' 
          ,a.currency 
          ,a.DATE 
          ) 
    END AS cost 
FROM execution e 
    ,vehicles v 
    ,allocation a 
WHERE e.vehicle = v.vehicle 
AND  a.part_id = e.part_id 
AND  a.aloc_sequence = e.aloc_sequence 
GROUP BY e.tran_id 
    ,e.SEQUENCE 
    ,date 
    ,a.aloc_sequence 

我不想包含的成本(已使用的情况下staement计算在SELECT) 在GROUP BY子句中包括组案例别名,请帮助我。 我使用Oracle作为当你通过,你基本上是将很多行到一个使用一组RDBMS不想by子句

回答

4

。您可以使用GROUP BY列确保组中每一行的值相同,或者您以某种方式汇总值(最小,最大,平均等)

如果您未指定列在群组中,由于它们不在群组中,因此它们可能是不同的,并且需要明确你想要哪个群组)

你可以在COST周围包装一个聚合即SUM(成本),如果你想要的总和,或MAX(成本),如果他们总是相同的行对行(虽然为什么不只是按组呢?)