連投で大変申し訳ありません。
いろいろ調べ、いろいろいじってみましたが、うまく出来ないため、質問させていただきます。
見積番号ごとの見積金額構成率を出したいのですが。
まず、テーブル構造から
「tbl見積Sub」 主キー:見積番号、SubID
見積番号 | SubID | 分類ID | 原価単価 | 見積単価 | 数量 | 品名 | 単位 |
---|---|---|---|---|---|---|---|
2305M001-00 | 1 | 1 | 1500 | 3000 | 1 | AAA | 個 |
2305M001-00 | 2 | 1 | 1600 | 3200 | 1 | BBB | 個 |
2305M001-00 | 3 | 2 | 2000 | 4000 | 1 | CCC | 個 |
2305M001-00 | 4 | 3 | 2100 | 4200 | 1 | CCC | 個 |
2305M001-00 | 5 | 5000 | 9800 | 1 | EEE | 個 | |
2305M001-01 | 1 | 3 | 1500 | 3000 | 1 | AAA | 個 |
2305M001-01 | 2 | 3 | 1600 | 3200 | 1 | BBB | 個 |
2305M001-01 | 3 | 4 | 2000 | 4000 | 1 | CCC | 個 |
2305M001-01 | 4 | 2100 | 4200 | 1 | CCC | 個 | |
2305M001-01 | 5 | 5 | 5000 | 9800 | 1 | EEE | 個 |
これを基に集計クエリを作りました。
「qry見積_分類集計」
見積番号 | 分類ID | 原価金額合計 | 見積金額合計 | 構成率 |
---|---|---|---|---|
2305M001-00 | 1 | 3100 | 6200 | |
2305M001-00 | 2 | 1600 | 3200 | |
2305M001-00 | 3 | 2100 | 4200 | |
2305M001-00 | 5000 | 9800 | ||
2305M001-01 | 3 | 3100 | 6200 | |
2305M001-01 | 4 | 2000 | 4000 | |
2305M001-01 | 5 | 5000 | 9800 | |
2305M001-01 | 2100 | 4200 |
構成率の欄には、最初、DSum関数でしたが、あまりにデータシートビューが開かないため、
サブクエリにしました。
構成率: [見積金額合計]/(SELECT SUM(見積単価 *数量) FROM tbl見積Sub WHERE 見積番号 = [見積番号])
これで開くと、全見積番号の見積金額の合計に対しての構成率が出てしまいます。
サブクエリの記述の仕方がまだ分かりきっていないため、うまく計算されません。
正しいサブクエリの記述の仕方をお教えくださいませ。
または、サブクエリ以外の方法があれば教えてください。
最終手段としては、見積番号ごとの見積金額集計のクエリを別途作成し、
「qry見積_分類集計」と見積番号で結合させて、構成率を出そうかと思っています。
しかしながら、シンプルに「qry見積_分類集計」だけで何とかならないかと思っています。
見積番号 = [見積番号] だと、どちらも見積番号サブクエリ側の同じ見積番号なので常にTrueなるので全体合計になっちゃいますね。別名をつけて区別がつくようにします。
速度的にはこちらの方がはやくなります。
複数のクエリができるのがいやなら、見積番号ごとの見積金額集計のクエリのSQLを「qry見積_分類集計」にサブクエリとして埋め込んでもいいでしょう。
hatena様
お教えいただいた式で問題なく表示されました!
これは難しい式ですね。全く想像もしなかった式でした。
速度はこちらでも全く問題なかったので、この式でいこうと思います。
しかし、Dsumは本当に遅すぎました。