クライアント情報を含む 2 つのテーブルがあります。
Portfolios
accountId Date portfolio
Barney 2013-06-28 Slate
Barney 2013-07-01 Bedrock
Barney 2013-07-02 Bedrock
Fred 2013-06-28 Slate
Fred 2013-07-01 Slate
Fred 2013-07-02 Slate
Money
accountId Date value
Barney 2013-06-28 $100.00
Barney 2013-07-01 $101.00
Barney 2013-07-02 $103.00
Fred 2013-06-28 $500.00
Fred 2013-07-01 $503.00
Fred 2013-07-02 $498.00
各戦略 (Slate と Bedrock) のポートフォリオ値を日付別に合計したいと思います。2 つを比較して、特定の戦略の実行中の値を取得できます。例えば:
SELECT Portfolios.accountId, Portfolios.Date, Portfolios.strategy,
Money.accountId, Money.Date, Money.strategy, SUM(Money.value) as sumtotal
from Money, Portfolios
WHERE Money.accountId = Portfolios.accountId
AND Money.Date = Portfolios.Date
AND Portfolio.portfolio = 'Slate'
GROUP BY Date ORDER by Date ASC
これは機能します。
Date value
2013-06-28 $600.00
2013-07-01 $503.00
2013-07-02 $498.00
私が仕事をすることができないのは、複数の日付で戦略を比較することです:
SUM (Money.value) WHERE Portfolios.strategy.date != Portfolios.strategy.date (-1)
GROUP BY Date
クエリが $100 のみを返すようにします (2013 年 6 月 28 日のバーニーのポートフォリオの最後の値は、彼が戦略を切り替える前です。