【发布时间】:2020-04-02 22:29:55
【问题描述】:
尝试创建一个函数,该函数需要一个月(1-12)并返回具有最高销售额(qtyordered * 报价)的 productID。 错误:PL/SQL:ORA-00936:缺少表达式,来自 where 子句中的子查询。 我假设这是这个函数的唯一错误,但我似乎无法让这个子查询工作。
SQL 新手,如果这是非常明显的事情,我深表歉意。使用 Oracle。
CREATE OR REPLACE FUNCTION get_monthly_sales (month_num IN NUMBER)
RETURN NUMBER IS
p_id NUMBER(10,0) := 0;
BEGIN
SELECT productid INTO p_id
FROM order_details ods INNER JOIN orders o
ON ods.orderid = o.id
WHERE (SELECT MAX(SUM(qtyordered * quotedprice)) FROM order_details)
AND EXTRACT(MONTH FROM orderdate) = month_num;
RETURN p_id;
END;
编辑:我在 WHERE 子句中添加了 IN 关键字,这允许创建函数,但现在返回以下错误:ORA-00978:nested group function without GROUP BY。
WHERE p_id IS
(SELECT MAX(SUM(qtyordered * quotedprice)) FROM order_details)
AND EXTRACT(MONTH FROM orderdate) = month_num;
【问题讨论】:
标签: sql oracle group-by sql-function