Oracle中的GROUP BY失败

问题描述

我在查询中添加了一条新语句。我也想计算单价,但我正在使用“ ORA-00904:“ TOTAL_COST”:无效的标识符ERROR“为什么? 我该怎么做? 预先感谢


Sum (A.Cost_Labor)+Sum (A.Cost_Material)+Sum ( A.Machine_Hours*C.Rate_Per_Hour) As Total_Cost,Total_Cost/A.Quantity_Produced as unit_price
´´´

Here is my whole query:

    ```

Select A.Job_Id,A.Location_Id,B.Location_Name,Substr(D.Contract_Date,4) As Year_Contract_Date,5,2) As Month_Contract_Date,Sum (A.COST_LABOR)As Sum_COST_LABOR,Sum (A.Cost_Material) As Sum_Material_Cost,Sum ( A.Cost_Overhead) As Sum_Cost_Overhead,Sum ( A.Machine_Hours*C.Rate_Per_Hour) As Sum_Machine_Cost,Sum(A.Quantity_Produced) As Sum_Quant_Prod,Sum (A.Cost_Labor)+Sum (A.Cost_Material)+Sum ( A.Machine_Hours*C.Rate_Per_Hour) As Total_Cost,Total_Cost/A.Quantity_Produced as unit_price
   
      From W_Sub_Job_F A,W_Location_D B,W_Machine_Type_D C,W_Job_F D,W_Time_D E
        Where A.Job_Id=D.Job_Id
        And A.Location_Id=B.Location_Id
        And A.Machine_Type_Id=C.Machine_Type_Id
        And D.Contract_Date=E.Time_Id
        Group By A.Job_Id,D.Contract_Date
        order by A.Job_Id,Year_Contract_Date,Month_Contract_Date ;
        ´´´

解决方法

此:

Sum (Sum (A.COST_LABOR)+Sum (A.Cost_Material)+Sum ( A.Machine_Hours*C.Rate_Per_Hour))As Total_Cost

应该只是

Sum (A.COST_LABOR) + Sum (A.Cost_Material) + Sum ( A.Machine_Hours * C.Rate_Per_Hour) total_cost

关于另一个问题(TOTAL_COST的ORA-00904):您不能在同一SELECT中引用它;要么将当前查询用作内联视图,要么使用整个计算(使TOTAL_COST)来计算UNIT_PRICE,例如

 Sum (A.Cost_Labor)+Sum (A.Cost_Material)+Sum ( A.Machine_Hours*C.Rate_Per_Hour) As Total_Cost,--
(Sum (A.Cost_Labor)+Sum (A.Cost_Material)+Sum ( A.Machine_Hours*C.Rate_Per_Hour)) / A.Quantity_Produced as unit_price
 -------------------------------------------------------------------------------
 ^^^^ this is TOTAL_COST
,

您不能以这种方式使用TOTAL_COST,它是一个伪列。您可以改用子选择

A{3}B{2}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...