Access でサブクエリを使用してクエリを作成しましたが、Excel 2003 でリンクできません。メニューData
-> Import External Data
->を使用Import Data...
して mdb ファイルを選択すると、クエリがリストに表示されません。メニューData
-> Import External Data
->を使用するNew Database Query...
と、リストにクエリが表示されますが、インポート ウィザードの最後に次のエラーが表示されます。
Too few parameters. Expected 2.
私の推測では、クエリ構文が問題を引き起こしていると思います。実際、クエリにはサブクエリが含まれています。そこで、クエリの目的と結果の構文について説明します。
テーブルの位置
- ID (自動採番、主キー)
- ポジション(ダブル)
- currency_id (long) (Currency.ID を参照)
- ポートフォリオ(ロング)
テーブル通貨
- ID (自動採番、主キー)
- コード (テキスト)
クエリの目標
- 2つのテーブルを結合
- ポートフォリオによるフィルター = 1
- ("A", "B") の currency.code でフィルタ
- 通貨ごとにグループ化し、各通貨グループのポジションの合計を計算し、結果を呼び出します: sumOfPositions
- 各通貨グループで abs(sumOfPositions) を計算します
- 前の結果の合計を 1 つの結果として計算する
クエリ
最終合計のないクエリは、デザイン ビューを使用して作成できます。結果の SQL は次のとおりです。
SELECT Currency.code, Sum(Positions.position) AS SumOfposition
FROM [Currency] INNER JOIN Positions ON Currency.ID = Positions.currency_id
WHERE (((Positions.portfolio)=1))
GROUP BY Currency.code
HAVING (((Currency.code) In ("A","B")));
最終的な SUM を計算するために、(SQL ビューで) 次のことを行いました。
SELECT Sum(Abs([temp].[SumOfposition])) AS sumAbs
FROM [SELECT Currency.code, Sum(Positions.position) AS SumOfposition
FROM [Currency] INNER JOIN Positions ON Currency.ID = Positions.currency_id
WHERE (((Positions.portfolio)=1))
GROUP BY Currency.code
HAVING (((Currency.code) In ("A","B")))]. AS temp;
問題は、エクスポートを機能させるためにクエリを構造化するためのより良い方法があるかどうかです。