プロが教えるわが家の防犯対策術!

お世話になっております。

Accessで以下の表がございます。

商品コード 本数 販売開始日
A       100  2014/04/01
B       150  2014/04/01
C       200  2014/05/01
D       300  2014/05/01
E       400  2014/06/01
F       300  2014/07/01

この表から、クエリを用いて、
当月(今でしたら2014年3月)から、
まず2か月先までのレコード(この表でいうと201/04/01~2014/05/01)で「本数」の値を集計して「2か月先販売予定」フィールドとして表示し、
同時に2か月以上先(この表でいうと201/06/01~2014/07/01)の値も集計して「2か月以上先販売予定」フィールドとして計算するにはどうしたらよいでしょうか?


当方VBAは使用できませんので、クエリでのやり方をご教授いただければと思います。

ご不明な点は加筆いたします。

ご教授どうぞよろしくお願いいたします。

A 回答 (4件)

No3です。

貼り付けたときにSQL文がずれたようなので
貼りなおしします。また、AccessのSQLビューに貼り付ける
ときは、以下のほうがいいようなので、こちらに変更してください。
No3のままだと、「後期本数の合計」のフィールドが、

     式1: Temp2.本数の合計

となり、

フィールド  前期本数の合計  式1: Temp2.本数の合計
テーブル     Temp1

のようになってしまうので、

フィールド  前期本数の合計  後期本数の合計
テーブル     Temp1        Temp2

のように手直しが必要になります。


SELECT Temp1.前期本数の合計, Temp2.後期本数の合計
FROM [SELECT Sum(テーブル名.本数) AS 前期本数の合計
FROM テーブル名
HAVING (((テーブル名.販売開始日)>=DateSerial(Year(Date()),Month(Date()),1) And (テーブル名.販売開始日)<=DateSerial(Year(Date()),Month(Date())+3,0)))]. AS Temp1, [SELECT Sum(テーブル名.本数) AS 後期本数の合計
FROM テーブル名
HAVING (((テーブル名.販売開始日)>=DateSerial(Year(Now()),Month(Now())+3,1)))]. AS Temp2;
    • good
    • 0

前期本数の合計  後期本数の合計


 750         700

のようにしたい、ということですか?
以下のようにしてみてはどうでしょう。
テーブル名は実際に合わせて変更してください。


SELECT Temp1.前期本数の合計, Temp2.本数の合計
FROM (SELECT Sum(テーブル名.本数) AS 前期本数の合計
FROM テーブル名
HAVING (((テーブル名.販売開始日)>=DateSerial(Year(Date()),Month(Date()),1) And (テーブル名.販売開始日)<=DateSerial(Year(Date()),Month(Date())+3,0)))) AS Temp1, (SELECT Sum(テーブル名.本数) AS 後期本数の合計
FROM テーブル名
HAVING (((テーブル名.販売開始日)>=DateSerial(Year(Date()),Month(Date())+3,1)))) AS Temp2;


なお、
>同時に2か月以上先(この表でいうと201/06/01~2014/07/01)
については、「2か月以上先以降すべて」としています。「二ヶ月毎」
ということではないようだ、との解釈です。そうでないならば、「後期本数の合計」
の期間の設定を変更する必要があります。
    • good
    • 0

回答します。

クエリで抽出条件のところでたとえば >2014/4/1 and <2014/6/1 と指定すると4月2日から5月31日までの本が抽出されます。そこで合計はクエリの結果の見えているところでツールのOFFICE LINKSのうちのエクセルを選び、エクセルにテータを持っていき、本数のフィールドを合計をツールバーの機能で計算したらよいです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2014/03/25 16:14

不明な点が2個。


月初販売開始なので、
>201/04/01~2014/05/01
とされているかと思いますが、
期間としては201/04/01~2014/05/31 ですよね?
二か月以上先の場合も、201/06/01~未来永劫 ?

求めたい結果の書式はどのようになりますか?
テーブル説明であげられたように↓
商品コード 本数 販売開始日
A       100  2014/04/01
B       150  2014/04/01
C       200  2014/05/01
D       300  2014/05/01
E       400  2014/06/01
F       300  2014/07/01

例を載せてみてください。
それによっては、クエリだけではなくVBA必須かもしれませんし
さらに言えばレポートに限って表現できる、・・・不可となるやも。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!