gpt4 book ai didi

mysql - 如何通过两个查询的结果在过程中进行计算

转载 作者:行者123 更新时间:2023-11-30 23:36:03 25 4
gpt4 key购买 nike

我有一个名为 TblOrders 的表。字段是 FldSlNoFldStrategyIDFldTradeServerNameFldBaseDirFldBinaryStartTimeFldInstrumentIDFldOrderNumberFldBuySellFldDisplayQuantityFldRemainingQuantity code>, FldTotalTradeQuantity, FldLastTradePrice, FldLastTradeQuantity, FldPrice, FldOrderTime, >FldReferenceTextFldOrderStatusID。现在我有一个名为 ProfitCalculation 的过程。

流程如下:

delimiter //
CREATE PROCEDURE ProfitCalculation
(
IN instrument INT(20) ,
OUT profit float(10,2)
)
BEGIN

DECLARE buy DECIMAL(10,2);
DECLARE sell DECIMAL(10,2);
DECLARE oprofit DECIMAL(8,2);

SELECT SUM(FldLastTradeQuantity*FldPrice)
FROM TblOrders
WHERE FldInstrumentID = instrument AND FldBuySell = 'b' AND FldLastTradePrice != 0 AND FldLastTradeQuantity != 0 group by FldInstrumentID INTO buy;

SELECT SUM(FldLastTradeQuantity*FldPrice)
FROM TblOrders
WHERE FldInstrumentID = instrument AND FldBuySell = 's' AND FldLastTradePrice != 0 AND FldLastTradeQuantity != 0 group by FldInstrumentID INTO sell;

SELECT (sell-buy) INTO oprofit;
SELECT oprofit INTO profit;
END
//
delimiter ;

它总是返回空值。有没有解决这个问题的方法。请帮帮我..提前致谢

最佳答案

首先,在这两个查询中,您都指定了一个 GROUP BY,但期望得到一个结果。由于您已经在 where 子句中包含分组字段,因此没有必要这样做。

其次,尝试运行单独的语句(没有“INTO”语句)——我的猜测是其中至少有一个返回 NULL,导致输出为空。如果您更喜欢零而不是 NULL 作为空记录集的输出,请将 SUM() 语句包装在 COALESCE 中,如下所示:

SELECT COALESCE(SUM(FldLastTradeQuantity*FldPrice), 0)

这样,如果两个语句之一返回 NULL,另一个仍然有效。

指定条件 FldLastTradePrice != 0 AND FldLastTradeQuantity != 0 是不必要的,因为它们会在 SUM 语句中处理。

关于mysql - 如何通过两个查询的结果在过程中进行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7266263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com