簡體   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