• ベストアンサー

Accessでのカウント方法

エクセルの場合で説明します。 A列は入荷、B列は出荷です。それぞれ、同じ日に複数回の入荷もしくは出荷があることもあれば、全くない日もあります。そこでD列以降のように、日別で入荷と出荷の回数をカウントしたいのです。 A列とB列のようなテーブルをアクセスで作り、クエリでD列以降のような結果を出す場合、どのようにすればいいのでしょうか?単純にカウントではできませんでした。→この場合はどちらかが主軸になるため、思ったような結果が出ません。 またエクセルのようなCountIfのような関数も内容なのですが・・・ 初歩的な質問かも知れませんがよろしくお願いします。

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

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

もし、入荷も出荷もない日は表示しなくていのであれば、次のSQL文で集計できます。 SELECT 日付, SUM(入荷) AS 入荷数, SUM(出荷) AS 出荷数 FROM (SELECT 入荷日 AS 日付, 1 AS 入荷, 0 AS 出荷 FROM 入出荷テーブル UNION ALL SELECT 出荷日 AS 日付, 0 AS 入荷, 1 AS 出荷 FROM 入出荷テーブル) GROUP BY 日付; しかし、全ての日付を出したいとなると少々やっかいです。 SQL文では、テーブルに登録されていない値(日付)を自動で作成するのことはできないからです。 どうしても全ての日付を出したいのであれば、事前に日付だけを登録した日付テーブルを作成しておく必要があります。 例えば、8月分だけの集計をしたいのであれば、次のような日付テーブルを作成しておきます。 日付 2009/08/01 2009/08/02 2009/08/03 ・・・・・ 2009/08/30 2009/08/31 作り方は、VBAを使ってテーブルを作成するか、Excelで日付データを作成してインポートしてください。 その後で、下記のSQL文を実行すれば、日付テーブルに登録した日付全てで集計できます。 SELECT 日付テーブル.日付, 入出荷.入荷数, 入出荷.出荷数 FROM 日付テーブル LEFT JOIN (SELECT 日付, SUM(入荷) AS 入荷数, SUM(出荷) AS 出荷数 FROM (SELECT 入荷日 AS 日付, 1 AS 入荷, 0 AS 出荷 FROM 入出荷テーブル UNION ALL SELECT 出荷日 AS 日付, 0 AS 入荷, 1 AS 出荷 FROM 入出荷テーブル) GROUP BY 日付) AS 入出荷 ON 日付テーブル.日付 = 入出荷.日付;

tarono0123
質問者

お礼

ありがとうございます。 もう少し、単純だと思っていました・・恥ずかしいです。 SQL文は難しいですよね~。でもおかげさまで何とか目的を果たせました。感謝しております。

関連するQ&A