取引のリストを含むテーブルがあります。
Security ; Quantity ; Price ; Consid
1. IBM ; +1,000 ; 20 ; -20k
2. IBM ; +2,000 ; 22 ; -44k
3. IBM ; -1,000 ; 30 ; +30k
4. IBM ; -2,000 ; 20 ; +40k
5. IBM ; -2,000 ; 20 ; -20k
したがって、PnL は基本的に Consid 列の合計であるため、Trade#5 が追加される前の PnL は +6k になります。
Trade #5 が追加された後、これは PnL を -14k として示していますが、これは私たちの立場を反映したものではありません。
私が望むのは、クローズされていない取引を除外する何らかの方法ですか? したがって、取引番号 5 は、テーブルに 2,000 株の IBM 株の購入を追加した場合にのみ、合計に含めることができます。
これに対する私の最初の試みは次のとおりです。
set @Ret = @Ret + isnull((SELECT SUM(GC) AS GS
FROM (SELECT SUM(GrossConsid) * - 1 AS GC
FROM Trades AS CT
WHERE (SpecialCond = 'Prop') AND (SettType <> 'Futures') AND (TrdDt <= @Date) AND (TrdDt >=@StartDate) AND (Name = 'my_Comp')
GROUP BY ABS(Quantity)
HAVING (SUM(Quantity) = 0)) AS dt),0)
しかし、+5、+5、-5 の数量の取引がある場合、(SUM(Quantity) = 0))
評価が false であるためカウントされないというエッジ条件があることを理解していません。
これを修正する方法についてのアイデアはありますか?
ありがとうクリス