不希望在group by子句中包含Case别名

时间:2011-08-09 06:47:34

标签: sql oracle

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
  
    

我不想包含成本(已使用SELECT中的案例计算)     在group by条款中,请帮助我。     我使用oracle作为rdbms

  

1 个答案:

答案 0 :(得分:4)

当您使用group by时,您实际上是将许多行合并为一个。您可以使用GROUP BY列,这可以保证组中每行的值相同,也可以通过某种方式聚合值(min,max,avg等)

如果你没有在group by中指定一个列,那么返回哪个值是不明确的(因为它们不在组中,它们可能不同,你需要明确你想要哪一个)

如果你想要总和,你可以围绕COST包装聚合,即SUM(成本),如果它们在行与行之间总是相同,则可以包括MAX(成本)(尽管为什么不在那时分组?)< / p>