Oracle 如何计算具有相同id的行的总和?
我需要创建一个函数,返回产品的最终收益。我的问题是,对于每个需要10天以上处理的产品,我必须在产品价格上加上(天*0.0001)。许多顺序ID有不同的乘积ID。我想不出在同一个函数中实现这一点的方法。我必须在哪里添加乘法?数据库模式如下所示 我尝试了双循环,我尝试了求和,但这些都不起作用Oracle 如何计算具有相同id的行的总和?,oracle,plsql,Oracle,Plsql,我需要创建一个函数,返回产品的最终收益。我的问题是,对于每个需要10天以上处理的产品,我必须在产品价格上加上(天*0.0001)。许多顺序ID有不同的乘积ID。我想不出在同一个函数中实现这一点的方法。我必须在哪里添加乘法?数据库模式如下所示 我尝试了双循环,我尝试了求和,但这些都不起作用 CREATE OR REPLACE FUNCTION get_gain(orderID NUMBER) RETURN NUMBER AS total_price NUMBER; t
CREATE OR REPLACE FUNCTION get_gain(orderID NUMBER)
RETURN NUMBER
AS
total_price NUMBER;
total_cost NUMBER;
gain NUMBER;
Cursor cur1 IS
SELECT SUM(PRICE) AS "Total PRICE"
FROM ORDERS
WHERE ORDER_ID=orderID;
Cursor cur2 IS
SELECT SUM(COST) AS "Total COST"
FROM ORDERS
WHERE ORDER_ID=orderID;
BEGIN
OPEN cur1;
FETCH cur1 INTO total_price;
CLOSE cur1;
OPEN cur2;
FETCH cur2 INTO total_cost;
CLOSE cur2;
gain := total_price - total_cost;
RETURN gain;
END;
您可以使用以下方法构造查询。我相信这次手术不需要任何功能
SELECT
ORDER_ID,
...
CASE WHEN DAYS_TO_PROCESS > 10 THEN
PRICE + DAYS_TO_PROCESS * 0.0001
ELSE
PRICE
END AS PRICE
FROM table1
WHERE ...
现在还不清楚你想要实现什么。请提供更多详情 下面是更新产品价格的函数示例
CREATE OR REPLACE FUNCTION UpdatePrice(orderID NUMBER)
RETURN NUMBER
AS
total_price NUMBER;
total_cost NUMBER;
gain NUMBER;
BEGIN
UPDATE table1
SET PRICE =
CASE WHEN DAYS_TO_PROCESS > 10 THEN
PRICE + DAYS_TO_PROCESS * 0.0001
ELSE
PRICE
END
WHERE ORDER_ID = p_ORDER_ID;
END;
请发布一个包含表定义、示例数据和预期输出的列表。谢谢,谢谢!正如我的教授所说,它必须是一个函数。