我在一个名为Trades的表中加载了数据。现在我需要查询此表,找到满足特定条件的元素并生成交易价值金额。 这是要求
TradeAmt = 0
Loop for all Trades
{IF TradeId is 35
If type = 'I'
ADD (TradeAmt =TradeAmt + col_TradeAmt )
else
ADD (TradeAmt = TradeAmt + col_TradeAmtOverlap )
END-IF}
Return TradeAmt
数据: Row1:tradeid = 35,type = I,col_TradeAmt = 10,col_TradeAmtOverlap = 20
Row2:tradeid = 35,type = S,col_TradeAmt = 30,col_TradeAmtOverlap = 40
输出:TradeAmt = 50
我如何使用SQL语句编写它。
答案 0 :(得分:1)
好吧,在SQL中,你并没有真正循环一个序列。 您编写的语句描述了您希望从数据集中获取的内容(例如,交易表)。
在您的情况下,您希望以某种方式累积所有元素并提供累积结果,您可以通过使用像SUM这样的聚合函数来实现。
这些方面的某些内容可能会起作用。请注意,我在这里嵌套了两个查询,内部一个用于根据交易类型决定将哪个列作为“金额”进行处理,并且仅使用Id 35过滤交易,外部查询执行所有金额的总和:
SELECT SUM("Amount") FROM
(SELECT
CASE
WHEN Type = 'I' THEN col_TradeAmt
ELSE col_TradeAmtOverlap
END "Amount"
FROM Trades
WHERE TradeId = 35) "TradeAmt";