Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


916 / 2272 ツリー ←次へ | 前へ→

【9542】DSUM関数の日ごと、商品ごとの集計 miyake 07/6/9(土) 22:53 質問[未読]
【9547】Re:DSUM関数の日ごと、商品ごとの集計 hatena 07/6/10(日) 10:14 回答[未読]
【9551】Re:DSUM関数の日ごと、商品ごとの集計 miyake 07/6/10(日) 13:09 質問[未読]
【9553】Re:DSUM関数の日ごと、商品ごとの集計 小僧 07/6/10(日) 15:14 回答[未読]
【9554】Re:DSUM関数の日ごと、商品ごとの集計 miyake 07/6/10(日) 16:09 お礼[未読]

【9542】DSUM関数の日ごと、商品ごとの集計
質問  miyake  - 07/6/9(土) 22:53 -

引用なし
パスワード
   いつもお世話になっております。
クエリーで結果を出したいのですが、うまくいかないため知恵を貸してください。
たとえば、商品売上テーブルがあります。

商品売上テーブル
売上日    商品名    金額
2007/05/01    ビデオ    100000
2007/05/01    エアコン    50000
2007/05/01    テレビ    300000
2007/05/02    パソコン    200000
2007/05/02    エアコン    50000
2007/05/03    パソコン    200000
2007/05/03    テレビ    300000
2007/05/04    テレビ    300000
2007/05/04    パソコン    200000
2007/05/04    エアコン    50000
2007/05/05    テレビ    130000
2007/05/05    パソコン    200000
2007/05/06    パソコン    200000
2007/05/06    ビデオ    100000

次に、これをもとにして、日ごとの累計金額を出そうとします。
(1日ごとに金額の累計が加算されていくもの)

金額の累計クエリー
売上日    商品名    金額の累計
2007/05/01    ビデオ    450000
2007/05/01    エアコン    450000
2007/05/01    テレビ    450000
2007/05/02    パソコン    700000
2007/05/02    エアコン    700000
2007/05/03    パソコン    1200000
2007/05/03    テレビ    1200000
2007/05/04    テレビ    1750000
2007/05/04    パソコン    1750000
2007/05/04    エアコン    1750000
2007/05/05    テレビ    2080000
2007/05/05    パソコン    2080000
2007/05/06    パソコン    2380000
2007/05/06    ビデオ    2380000

このクエリーは、売上日と商品名はグループ化し、金額の累計は
金額の累計: DSum("金額","商品売上テーブル","売上日 <= #" & [売上日] & "#")
にしています。
このクエリーでは、日ごとに加算した累計はでますが、商品名が無視されています。
ここで質問ですが、日ごとの加算した累計をさらに商品名ごとに分けてだすことはできるのでしょうか。
教えてください、よろしくお願いします。

【9547】Re:DSUM関数の日ごと、商品ごとの集計
回答  hatena  - 07/6/10(日) 10:14 -

引用なし
パスワード
   >このクエリーは、売上日と商品名はグループ化し、金額の累計は
>金額の累計: DSum("金額","商品売上テーブル","売上日 <= #" & [売上日] & "#")
>にしています。
>このクエリーでは、日ごとに加算した累計はでますが、商品名が無視されています。
>ここで質問ですが、日ごとの加算した累計をさらに商品名ごとに分けてだすことはできるのでしょうか。

金額の累計: DSum("金額","商品売上テーブル",
"売上日 < #" & [売上日] & "# OR (売上日=#" & [売上日] & "# AND 商品名<='" & [商品名] & "')")

でいかが。

【9551】Re:DSUM関数の日ごと、商品ごとの集計
質問  miyake  - 07/6/10(日) 13:09 -

引用なし
パスワード
   ▼hatena さん:
回答ありがとうございます。
私の説明不足もあり、うまく伝わらず、うまくいきませんでした。

クエリーで求めたい形は

商品売上テーブル
売上日    商品名    金額
2007/05/01    ビデオ    100000
2007/05/01    エアコン    50000
2007/05/01    テレビ    300000
2007/05/02    パソコン    200000
2007/05/02    エアコン    50000
2007/05/03    パソコン    200000
2007/05/03    テレビ    300000
2007/05/04    テレビ    300000
2007/05/04    パソコン    200000
2007/05/04    エアコン    50000
2007/05/05    テレビ    130000
2007/05/05    パソコン    200000
2007/05/06    パソコン    200000
2007/05/06    ビデオ    100000



求めたいクエリーの結果
売上日    商品名    金額
2007/05/01    ビデオ    100000
2007/05/01    エアコン    50000
2007/05/01    テレビ    300000
2007/05/02    パソコン    200000
2007/05/02    エアコン    100000
2007/05/03    パソコン    400000
2007/05/03    テレビ    600000
2007/05/04    テレビ    900000
2007/05/04    パソコン    600000
2007/05/04    エアコン    150000
2007/05/05    テレビ    1030000
2007/05/05    パソコン    800000
2007/05/06    パソコン    1000000
2007/05/06    ビデオ    200000

このような形です。
例えばエアコンを例に説明しますと、エアコンが5月1日と2日と4日に50000円で1台売れたとします。
これをクエリーの結果では、5月1日のエアコンの金額は50000円、2日は100000円、4日は150000円と、その日の金額にその日以前の累計を出したいのです。これを商品ごとにしたいのですが、可能でしょうか。
よろしくお願いします。

【9553】Re:DSUM関数の日ごと、商品ごとの集計
回答  小僧  - 07/6/10(日) 15:14 -

引用なし
パスワード
   ▼miyake さん、hatena さん
こんにちは。

>金額の累計: DSum("金額","商品売上テーブル",
"売上日 < #" & [売上日] & "# OR (売上日=#" & [売上日] & "# AND 商品名<='" & [商品名] & "')")


なんか微妙に違ってますね…。

金額の累計: DSum("金額","商品売上テーブル",
"商品名='" & [商品名] & "' AND 売上日 <=#" & [売上日] & "#")

こんな感じでしょうか。


ご提示頂いたデータにはありませんが、

2007/05/01 ビデオ 100000
2007/05/01 ビデオ  50000

のように同日で同じ商品の売上が記載される可能性はありませんか?

もし、商品売上テーブルに主キーがないのでしたら
上記可能性がないのでしたら売上日、商品名を複合の主キーに
また重複する可能性がある場合は適当にオートナンバー型のフィールドを
追加して、そのフィールドを主キーにした方が良いかと思われます。


また商品名フィールドも商品コードをつけて
マスタ管理された方が良いかもしれませんね。

【9554】Re:DSUM関数の日ごと、商品ごとの集計
お礼  miyake  - 07/6/10(日) 16:09 -

引用なし
パスワード
   小僧 さん、hatenaさん、ありがとうございます。
小僧さんのご指摘により、問題がクリアしました。
すばらしい!
またよろしくお願いいたします。

916 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078201
(SS)C-BOARD v3.8 is Free