私のデータベースは、ユーザーが作成した現金残高、取引、オーバーナイト ポジションに関するものです。日付にもズレがあります。
CTE を使用して、現金と取引の残高合計 [cashtrade_sum] とポジション [pos_sum] を含む 2 つのテーブルを選択しました。以下にサンプルを示します。
cashtrade_sum
-------------
2012-01-30 10000.00
2012-03-19 9868.99
2012-03-20 9839.02
2012-03-21 10476.10
2012-03-22 0.00
2012-03-23 10102.81
2012-03-26 10314.76
2012-03-27 11037.40
2012-03-28 9887.76
2012-03-29 9234.28
2012-03-30 8718.67
2012-04-02 8396.65
2012-04-03 0.00
2012-04-12 0.00
2012-05-18 1796.78
pos_sum
-------
2012-03-22 17628.00
2012-03-23 0.00
2012-03-28 373.24
2012-03-29 0.00
2012-04-03 20835.00
2012-04-04 20736.00
2012-04-05 20268.00
2012-04-06 20268.00
2012-04-07 20268.00
2012-04-08 20268.00
2012-04-09 20412.00
2012-04-10 19998.00
2012-04-11 18999.00
2012-04-12 11465.00
2012-04-13 10975.00
2012-04-14 10975.00
2012-04-15 10975.00
2012-04-16 9750.00
以前の利用可能日の [cashtrade_sum] 値に応じて、各 [pos_sum] 値にコミッション式を適用する必要があります。結果は現在の [cashtrade_sum] 日付に追加する必要があります。したがって、現在の日付 [cashtrade_sum] は、以前の合計または減算に依存します。
明確にするために、現在の [pos_sum] が昨日の [cashtrade_sum] または最大前の利用可能な日付よりも大きい [cashtrade_sum] から各 [pos_sum] 値の 5% を減算する方法を簡単に説明します。[cashtrade_sum] の値が前のステップですでに変更されていると仮定します。
INSERTionsなしでオンザフライでCTEを作成し、5%の手数料値を個別に取得するのを手伝ってください。このような:
results
-------
commission cash
2012-01-30 10000.00
2012-03-19 9868.99
2012-03-20 9839.02
2012-03-21 10476.10
2012-03-22 881.4 9594.70
2012-03-23 0.00 9594.70
2012-03-28 0.00 9594.70
2012-03-29 0.00 9594.70
2012-04-03 1041.75 8552.95
2012-04-04 1036.80 7516.12
2012-04-05 1013.40 6502.72
...
日付のギャップも埋めた方が良いですが、これは一例です。実際の式ははるかに複雑です。
SQL Server 2008 R2 で実行されています。
ありがとうございました!