繁体   English   中英

选择SQL中缺少表达式

[英]missing expression in Select SQL

我是SQL和子查询的新手,当我自己运行子查询时,将获得正确的数据输出。 但是,当我运行完整查询时,会收到错误消息

SELECT *第3行出现错误:ORA-00936:缺少表达式

这是我的代码:

SELECT 
MAX(
    SELECT 
    SUM(
        ALLOCATION.HourlyRate 
        * 
        ACTION.HrsWorked
        ) 
    FROM ALLOCATION 
    INNER JOIN ACTION 
    ON ((ACTION.ActId  = ALLOCATION.ActId) AND (ACTION.EmpId  = ALLOCATION.EmpId)) 
    GROUP BY (ALLOCATION.ActId)
)
FROM ALLOCATION
GROUP BY (ALLOCATION.ActId)

解:

   SELECT MAX(sum_total_pay)
FROM
(
    SELECT SUM(ALLOCATION.HourlyRate *  ACTION.HrsWorked) AS sum_total_pay
    FROM ALLOCATION 
    INNER JOIN ACTION 
    ON ((ACTION.ActId  = ALLOCATION.ActId) AND (ACTION.EmpId  = ALLOCATION.EmpId))
    GROUP BY (ALLOCATION.ActId)
);

您还需要两个括号:)

  SELECT MAX ( (  SELECT SUM (ALLOCATION.HourlyRate * ACTION.HrsWorked)
                    FROM ALLOCATION INNER JOIN ACTION ON (ACTION.ActId = ALLOCATION.ActId) AND (ACTION.EmpId = ALLOCATION.EmpId)
                GROUP BY (ALLOCATION.ActId)))
    FROM ALLOCATION
GROUP BY ALLOCATION.ActId

Select into MAX必须在括号内。

逻辑尚不清楚。 这样就可以得出每次活动的总收入:

  SELECT ALLOCATION.ActId, SUM (ALLOCATION.HourlyRate * ACTION.HrsWorked) total_pay
    FROM ALLOCATION b INNER JOIN ACTION ON ACTION.ActId = ALLOCATION.ActId AND ACTION.EmpId = ALLOCATION.EmpId
GROUP BY ALLOCATION.ActId

如果您想查看哪个活动支付的费用最高,请通过desc订购:

  SELECT *
    FROM (  SELECT ALLOCATION.ActId, SUM (ALLOCATION.HourlyRate * ACTION.HrsWorked) total_pay
              FROM ALLOCATION b INNER JOIN ACTION ON ACTION.ActId = ALLOCATION.ActId AND ACTION.EmpId = ALLOCATION.EmpId
          GROUP BY ALLOCATION.ActId)
ORDER BY total_pay DESC

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM