• ベストアンサー

アクセスを使って累計を出すには?

かなり長いあいだ取り組んでいるのですがなかなかできません。 クエリの中で日付に対応して数値があるのですが(日付のフィールドと数値のフィールドで2列)、その数値が今年に入って合計でいくつになるのか、今月に入っていくつになるのか「累計」を同じクエリ上の別のフィールドに出したいのですがうまくいきません。 どこをどういじったらよいのか、どなたかおしえていただけませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Hk2001
  • ベストアンサー率48% (24/49)
回答No.3

テーブル構造 -------------------- 日付TBL.日付 日付TBL.数値 ********************************** 参考クエリ ********************************** 1."月集計"という名前のクエリを以下のSQLで作ります。 このクエリは、当日までの各月の数値の集計です。 出力項目は 月・・・ YYYY/MM 月合計・・・ 月の数値の合計 SELECT Format$([日付],'yyyy/mm') AS 月, Sum(日付TBL.数値) AS 月合計 FROM 日付TBL WHERE (((日付TBL.日付)<=Now())) GROUP BY Format$([日付],'yyyy/mm') 2."年集計"という名前のクエリを以下のSQLで作ります。 このクエリは、当日までの各年の数値の集計です。 出力項目は 年・・・ YYYY 年合計・・・ 年の数値の合計 SELECT Format$([日付],'yyyy') AS 年, Sum(日付TBL.数値) AS 年合計 FROM 日付TBL WHERE (((日付TBL.日付)<=Now())) GROUP BY Format$([日付],'yyyy') 3. 日付TBLと1.、2.で作成したクエリ(月集計、年集計)3つを使い サブクエリを作る。 SELECT 日付TBL.日付, 日付TBL.数値, Format$([日付],'yyyy') AS 年, 年集計.年合計, Format$([日付],'yyyy/mm') AS 月, 月集計.月合計 FROM 日付TBL, 月集計, 年集計 WHERE (((Format$([日付],'yyyy'))=[年集計].[年]) AND ((Format$([日付],'yyyy/mm'))=[月集計].[月])) 4. クエリを参照している部分をSQL文にする。 No.2を参考にしてください。 FROM (Sql文) As 名前 名前の部分に クエリ名 SQL文の部分に クエリの内容(SQL文) 要するに月集計、年集計は作ったクエリを参照しているので 参照をやめ、SQL文に変えてしまうということです。 ただし、クエリをしっかり管理しておけば 1.、2.、3.までの工程で十分ですよ。 サブクエリは、結構使えるので是非覚えておいてください。

tentententen
質問者

お礼

何度もすいません。そしてありがとうございます。 日付TBL.日付は宿泊実績表:日ごと集計(本館)というクエリの宿泊日というフィールドで 日付TBL.数値は宿泊実績表:日ごと集計(本館)というクエリの合計というフィールドなので それに置き換えて早速1.の月集計を作成しているのですが、 SELECT Format([宿泊日],'yyyy/mm')AS月, Sum(宿泊実績表:日ごと集計(本館).合計)AS月合計 FROM 宿泊実績表:日ごと集計(本館) WHERE(((宿泊実績表:日ごと集計(本館).宿泊日)<=Now())) GROUP BY Format$([宿泊日],'yyyy/mm') を月集計クエリとしてSQLを入力すると クエリ式:Format([宿泊日],'yyyy/mm')AS月の構文エラー:演算子がありませんというエラーメッセージが出て先にすすめないくなってしまいます。 演算子?ってことになってしまっています。 本当に何度もすいません。どうすればエラーをクリアーできますでしょうか?

tentententen
質問者

補足

今日ずっと取り組んでようやく完成いたしました。いろいろと勉強になり、特にSQLというのをもっと勉強できたらアクセスも使いやすくなるだろうなとおもいました。私のような良く分かっていない人間に貴重なお時間をさいてアドヴァイスをして下さった事感謝致します。 ありがとうございました。

その他の回答 (3)

  • ryuu001
  • ベストアンサー率61% (46/75)
回答No.4

レポートの作り方ですが、 テーブルを元に ウイザードを使用してレポートを作成します。 レポートをデザイン画面にします。 ”並べ替え/グループ化” の設定をします。 (表示(V)のところにあります。) ”並べ替え/グループ化”のフィールド/式を  日付を設定した フィールド名 にします。 グループプロパティは グループフッター を はい グループごと を 年 グループ間隔 を 1 にします。 グループヘッダー と 同一ページ印刷はとりあえずそのまま。 もう1段 フィールド/式 を設定します。 これも、日付を設定した フィールド名 にします。 グループプロパティは グループフッター を はい グループごと を 月 グループ間隔 を 1 にします。 グループヘッダー と 同一ページ印刷はとりあえずそのまま。 これで、レポートのデザイン画面に 日付用の フッターが 2つできます。 それぞれの フッターに テキストボックスを 1つ づつ配置します。 コントロールソースは 両方とも  =Sum([数量]) にします。  [数量] は 数量を設定しているフィールド名にします。 以上です。 

tentententen
質問者

お礼

いろいろご親切にありがとうございました。お蔭様で問題解決致しました。 本当に助かりました。

  • Hk2001
  • ベストアンサー率48% (24/49)
回答No.2

サブクエリを使用すれば可能ですよ。 作り方は、年集計、月集計を行ったクエリを作っておき 新しいクエリに作ったクエリを追加し表示項目(集計値)と 接続項目もしくは条件項目(この場合は、それぞれ年と月) を使いクエリを完成させ保存、その後、 SQL文を表示させ FROM句のそれぞれクエリ名の所に 下記の形でSQL文を追加すれば完成 FROM (Sql文) As クエリ名 サブクエリ部分にはオーダーなど使えないので注意してください。 テーブル構造 -------------------- 日付TBL.日付 日付TBL.数値 ********************************** 参考クエリ ********************************** SELECT 日付TBL.日付, 日付TBL.数値, Format$([日付],'yyyy') AS 年, 年集計.年合計, Format$([日付],'yyyy/mm') AS 月, 月集計.月合計 FROM 日付TBL, ( SELECT Format$([日付],'yyyy/mm') AS 月, Sum(日付TBL.数値) AS 月合計 FROM 日付TBL WHERE (((日付TBL.日付)<=Now())) GROUP BY Format$([日付],'yyyy/mm') ) As 月集計, ( SELECT Format$([日付],'yyyy') AS 年, Sum(日付TBL.数値) AS 年合計 FROM 日付TBL WHERE (((日付TBL.日付)<=Now())) GROUP BY Format$([日付],'yyyy') ) As 年集計 WHERE (((Format$([日付],'yyyy'))=[年集計].[年]) AND ((Format$([日付],'yyyy/mm'))=[月集計].[月]))

tentententen
質問者

お礼

いろいろ書いていただいて本当に有難う御座います。ただ、実力不足でまだ??でいっぱいです。 *年集計、月集計を行ったクエリをつくっておき・・・とありますが、どうすればいいのかわかりません。情けないのですが… そして、 *新しいクエリに作ったクエリを追加し、表示項目を使いクエリを完成させ・・・というのもピンと来ません。 折角書いていただいたので、自分なりにやっては見たのですが、うまく行かずまた質問を書かせていただきました。本当に申し訳ありませんがもう少し説明していただけませんでしょうか?

  • ryuu001
  • ベストアンサー率61% (46/75)
回答No.1

1つのクエリーで集計と明細の両方を出すのは難しそうですね。 レポートを使われたらいかがですか?

tentententen
質問者

お礼

ありがとうございます。レポートを使ってどのようにすればできますでしょうか? 何かアドバイスがあるととても助かるので よろしくおねがいいたします。

関連するQ&A