まず、Access 2007 で作業しています。
日付別に集計する 2 つのクエリがあります。
最初のものは、集計された日次の加重リターンを返します
SELECT Records.RecDate, Sum([YTD]*[Weight]) AS UnadjReturn
FROM Records
WHERE (((Records.[Class1])="eq") AND ((Records.[Class2])="ce"))
GROUP BY Records.RecDate;
結果:
RecDate UnadjReturn
11/27/2012 0.060778036742704
12/11/2012 0.075592752895318
12/14/2012 7.47574641136453E-02
また、ポートフォリオ全体に対する資産クラス内のすべての資産の重みを合計することで、毎日の合計クラス ポートフォリオの重みを返す別のクエリもあります。
SELECT Records.RecDate, Sum(Records.Weight) AS SumOfWeight
FROM Records
WHERE (((Records.[Class1])="eq") AND ((Records.[Class2])="ce"))
GROUP BY Records.RecDate;
戻り値:
RecDate SumOfWeight
11/27/2012 0.479327081236988
12/11/2012 0.483075813390315
12/14/2012 0.482791727874428
UnadjReturn
ここで、毎日のを掛ける統合クエリを書きたいと思いますSumOfWeight
。私は2つを試しINNER JOIN
てから、次のように2つの変数を掛けました。
SELECT joined.RecDate, joined.UnadjReturn * joined.SumOfWeight as AdjReturn
FROM joined
(
SELECT Records.RecDate, Sum([YTD]*[Weight]) AS UnadjReturn
FROM Records
WHERE (((Records.[Class1])="eq") AND ((Records.[Class2])="ce"))
GROUP BY Records.RecDate
INNER JOIN
(
SELECT Records.RecDate, Sum(Records.Weight) AS SumOfWeight
FROM Records
WHERE (((Records.[Class1])="eq") AND ((Records.[Class2])="ce"))
GROUP BY Records.RecDate;
) t2
ON Records.RecDate = t2.RecDate
AS joined
)
これはまったく見栄えがよくありません。助言がありますか?2つのクエリを別のクエリでクエリすることで実行できますが、1つだけで処理したいと思います。