Access。クエリで集計は集計だけど…累計って算出できるの?
<DSum関数>
Excelでは、ごくごく普通に資料に算出している「累計」なのですが、Accessで累計を算出することはできるのでしょうか?
またどのようにしたら、クエリで算出することができるのでしょうか?
Excelでは、SUM関数と絶対参照との組み合わせで、
累計を算出することは簡単にできますよね。数式としては、こんな感じですね。
=SUM($B$2:B2)
あとは、オートフィルで数式をコピーすれば簡単に算出できますが、
Accessのクエリで、累計は算出することはできることはできますが、
ちょっと煩雑な演算式を作る必要があります。
まぁAccessはデータベースソフトなので、
1レコード分ずつをみますが、それを縦方向に考えるということは、
集計以外考えませんので、煩雑になってしまうのかも。
次のテーブルがあります。
数量の累計を算出するクエリを作っていきましょう。
クエリデザインで次のようにフィールドを作っていきましょう。
累計を算出するには、AccessのDSum関数を使うことで算出することが出来ます。
DSum関数の引数はどのようになっているのかを先に確認しておきましょう。
DSum関数(累計させたいフィールド名,保存するテーブル名かクエリ名,条件)
となっています。
ただし、このまま実行しようとすると、エラーが出てしまいます。
演算フィールド名である、「累計」という文字は表示されていますから、
演算フィールドは合っているようですね。
では、なぜエラーになってしまったのかというと、保存していないからです。
このDSum関数の引数を改めて確認してみましょう。
DSum関数(累計させたいフィールド名,保存するテーブル名かクエリ名,条件)
引数の中に、保存するテーブル名かクエリ名とありますよね。
そのためクエリの場合は、
先にクエリ名をつけておかないとエラーが発生してしまうのです。
では、Q累計というクエリ名を付けて保存しておきましょう。
では、改めて実行してみることにしましょう。
累計を算出することが出来ましたね。
当然クエリですので、他のフィールドに条件を付けることで、
その条件での累計も簡単に算出することが出来るようになりました。
しかし、この累計ですが、左揃えになっていますね。
これは、文字型の数値になってしまっていますので、
せっかくですから、次のように累計の演算フィールドを修正しておきましょう。
累計: DSum("数量","Q累計","[管理ID]<=" & [管理ID])*1
最後に、×1を入れたわけですね。
Excelでおなじみの、文字型数値を数値に変換する方法と同じですね。
では実行して確認しておきましょう。
このように、累計の値が右揃えになりましたね。
Accessで累計を算出するときには、
DSum関数を使うことで算出することが出来ますね。