• ベストアンサー

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

Hk2001の回答

  • ベストアンサー
  • 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というのをもっと勉強できたらアクセスも使いやすくなるだろうなとおもいました。私のような良く分かっていない人間に貴重なお時間をさいてアドヴァイスをして下さった事感謝致します。 ありがとうございました。

関連するQ&A

  • Access 2000 ひと月単位で一日ごとの累計を出したいのですが・・・。

    いろいろ探して、 累計: DSum("新規","日報","[日付]<=#" & [日付] & "#") という、式をクエリに貼り付けたのですが、これだと、月ごとの累計にならず、困っています。どなたか、お教えいただけないでしょうか ID   日付    年月   新規  累計 1  2008/10/20  2008/10   1   1 2  2008/10/25  2008/10   1   2 3  2008/11/05  2008/11   2   4 ⇒ 2 4  2008/11/10  2008/11   1   5 ⇒ 3 5  2008/11/15  2008/11   2   7 ⇒ 5 6  2008/11/20  2008/11   1   8 ⇒ 6 7  2008/11/25  2008/11   1   9 ⇒ 7 8  2008/11/30  2008/11   2   11 ⇒ 9 9  2008/12/05  2008/12   1   12 ⇒ 1 10  2008/12/10  2008/12   2   14 ⇒ 3 とにかく、その「日付」の月の初めから、その「日付」の日までの累計が、その「日付」の累計の列に入ればよいのですが、よろしくお願い致します。

  • Access2007 クエリ 累計求め方

    以下の並びの選択クエリがあります。 [営業担当] [担当企業] [受注フラグ] [月] [累計] 月は昇順で増えていきます。 受注フラグは全て「1」と表示されています。 受注フラグを合計して、月次の累計推移を出したいと考えています。 【累計】のフィールドにDsum(式)を活用する所までは分かりましたが、 (式)内にどの様な式を指定すればよいか分かりません。 どなたかご教授頂ければ幸いです。

  • Access 2000ひと月単位で一日ごとの累計を出したいのですが・・・。

    いろいろ探して、 累計: DSum("新規","日報","[日付]<=#" & [日付] & "#") という、式をクエリに貼り付けたのですが、これだと、月ごとの累計にならず、困っています。どなたか、お教えいただけないでしょうか ID   日付    年月   新規  累計 1  2008/10/20  2008/10   1   1 2  2008/10/25  2008/10   1   2 3  2008/11/05  2008/11   2   4 ⇒ 2 4  2008/11/10  2008/11   1   5 ⇒ 3 5  2008/11/15  2008/11   2   7 ⇒ 5 6  2008/11/20  2008/11   1   8 ⇒ 6 7  2008/11/25  2008/11   1   9 ⇒ 7 8  2008/11/30  2008/11   2   11 ⇒ 9 9  2008/12/05  2008/12   1   12 ⇒ 1 10  2008/12/10  2008/12   2   14 ⇒ 3 一度クエリで11月(2008/11)だけにしてからやればよいと思ったのですが、DSum関数がテーブルからしか作れないようで、うまくいきません。お願いします。

  • MS-Accessの累計の出し方

    MS-Access2000を使用しています。クエリーで累計を出したいのですがうまくいきません、ご教授いただけますせんでしょうか。 以下のようなクエリーがあります。ソートの第一条件を"日付を昇順"、第二条件を"入出庫数を降順"としています。 製品別在庫クエリー (型番)/(日付)/(販売・仕入先)/(入出庫数) AAA/______________/在庫 /100 AAA/ 7月15日/仕入先A /200 AAA/ 7月15日/顧客B /-50 AAA/ 7月15日/顧客A /-100 AAA/ 7月21日/仕入先A / 150 AAA/ 7月21日/顧客C /-200 AAA/ 7月24日/仕入先A / 300 AAA/ 7月25日/顧客A /-50 AAA/ 7月25日/顧客C /-100 ここに以下のように"累計"を追加して以下のように表示させたいと思っています。 製品別在庫クエリー (型番)/(日付)/(販売・仕入先)/(入出庫数)/(累計) AAA/______________/在庫/100/100/ AAA/7月15日/仕入先A/200/300 AAA/7月15日/顧客B/ -50/250 AAA/7月15日/顧客A/ -100/150 AAA/7月21日/仕入先A/150/300 AAA/7月21日/顧客C/-200/100 AAA/7月24日/仕入先A/300/400 AAA/7月25日/顧客A/ -50/350 AAA/7月25日/顧客C/ -100/250 しかしDSum関数を使って以下のように書いてみましたがエラーになってしまいます。 累計:DSum("入出庫","製品別在庫クエリー","[日付]<=" & [日付] & "") MSのサポートページをみてもよくわかりません。具体的にどう書き直せばいいか教えていただけますでしょうか? またDSum関数にはこだわりません、クエリーに累計を表示できればOKです。宜しくお願いいたします。

  • Accessのクエリーで累計を計算したい

    Accessのレポートでは、計算したいフィールドのプロパティを開いて、集計実行で指定すれば、自動的に累計計算してくれるのですが、クエリーの状態で累計計算させるのには、どうしたらいいのでしょうか。何方かご存知の方はいらっしゃいませんでしょうか。

  • ms access クエリの集計について

    こんにちは ms accessのクエリで、文字列として入力されている数字を数値扱いに直してその合計を出そうとしているのですが、特定の値を指定して合計を出そうとすると値がマイナスになってしまいます。 例 式1:sum(val(nz[フィールド名]))=1) フィールドに1とあるレコードを足して合計を出す場合です。値がマイナスになってしまいます。nzは別のクエリ使用時に空欄があるとまずいので入れてあります。 左隣で別のフィールドでグループ化し、ここでは演算を選択しています。

  • Access2003のクエリでフィールドに累計の式を入力したのですが、うまくいきません。

    以下のような「生産出荷クエリ」があります。 ※商品コードは「オートナンバー型」です 年月日 商品コード 生産数量 2008/01/01 商品1  1 2008/01/01 商品2  0 2008/01/01 商品3  2 2008/01/02 商品1  0 2008/01/02 商品2  1 2008/01/02 商品3  0 ・・・・ 2008/01/15 商品1  2 2008/01/15 商品2  3 2008/01/15 商品3  1 「作成したいクエリ」は以下のとおりです。 累計はその月の1日からの合計です 年月日 商品コード 生産数量 生産数量の累計 2008/01/01 商品1  1  1 2008/01/01 商品2  0  0 2008/01/01 商品3  2  2 2008/01/02 商品1  0  1(1+0)商品1の2008/01/01から2008/01/02までの合計 2008/01/02 商品2  1  1(0+1) 2008/01/02 商品3  0  2(2+0) ・・・・ 2008/01/15 商品1  2  9(1+0+・・・+2)商品1の2008/01/01から2008/01/15までの合計 2008/01/15 商品2  3  8(0+1+・・・+3) 2008/01/15 商品3  1  10(2+0+・・・+1) ※生産数用の累計の(1+0+・・・+2)は表示しなくて良いです。 「生産数量の累計」フィールドに 生産数量の累計: DSum("[生産数量]","生産出荷クエリ","[商品コード]=[生産出荷クエリ].[商品コード] And [年月日] Between #" & CDate(Format(生産出荷クエリ!年月日,"yyyy/mm") & "/01") & "# and #" & Format(生産出荷クエリ!年月日,"yyyy/mm/dd") & "#") と入力すると 年月日 商品コード 生産数量 生産数量の累計 2008/01/01 商品1  1  3(2008/01/01の全ての商品の合計) 2008/01/01 商品2  0  3( 〃 ) 2008/01/01 商品3  2  3( 〃 ) 2008/01/02 商品1  0  1(2008/01/02の全ての商品の合計) 2008/01/02 商品2  1  1( 〃 ) 2008/01/02 商品3  0  1( 〃 ) ・・・・ 2008/01/15 商品1  2  6(2008/01/15の全ての商品の合計) 2008/01/15 商品2  3  6( 〃 ) 2008/01/15 商品3  1  6( 〃 ) となってしまい、年月日ごとの全ての商品の合計が、年月日ごとに生産数量の累計に入力されてしまいます。 上記の「作成したいクエリ」のようにするにはどうしたら良いのでしょうか? よろしくお願いします。

  • Accessで累計計算する方法を教えてください。

    現在Access2000で、在庫管理をしています。 添付ファイルのように(1)~(3)のようなテーブルがあります。商品を発注するにあたり(3)現在庫の確認と(2)発注済み分の確認、(1)受注内容の確認などと効率の悪い状況です。 そこで各商品ごとに入出庫をみることができるレポートを出力できるようにしたいと思います。例えば、商品Bであれば(4)のようなレポートを出力したいと思います。 (1)と(2)のテーブルのフィールドをユニオンクエリーで結合させるところまでは何とかできたのですが、肝心な"在庫累計"をうまく計算できません。添付ファイルの(A)と(B) 色々調べると、Dsum関数があるようなのですで、このユニオンクエリーをもとに選択クエリーをつくりこの関数を使ってみたのですが(4)のレポートのようにはいきません。"期日"を条件にしたのですが同じ日だとすべて合計されてしまします。また、出力するレコードの順番は日付で昇順、同じ日付のレコードは入庫(プラスのレコード)を上位に、続いて出庫(マイナスのレコード)の順番にしたいです。 (4)のようなレポートが作成できれば方法は問わないです... なにかいい方法をアドバイスをいただけますでしょうか。 宜しくお願いいたします。

  • Access2010の質問です。

    値の入力されたフィールド数の合計をクエリで求める方法はありますか? レコードのフィールドに入力されているのは、色々なデータ型がありますが、その中に日付/時刻型で指定しているフィールドが14あります。 その内の10フィールドが対象で、その10フィールドには、年月日が入力されているフィールドと、入力されていないフィールドが混在しています。入力されているフィールドを1カウントとして、入力されているフィールド数の合計を求めたいのですが。 分かる方、是非教えて下さい。 宜しくお願いします。

  • ExcelマクロでAccessデータを累計処理

    Excel2010のVBAでAccess2010のデータをDAOで操作しています。 そこで、下記のような加算処理(bフィールドでaフィールドの累計)ができるのでしょうか。また、更新クエリで このようなことができるものなのでしょうか??Access初心者です。 a  b 10 10 20 30 15 45 30 75