メモのコツを教えてください!

Accessを使ってあるデータの送信履歴を記録しており
日付別の統計を取りたいと考えています。

AテーブルとBテーブルは以下のような構造をしています。
 [id]項目ID(数値型)
 [senddate]日付を表すフィールド(日付/時刻型)
 [endflg]終了フラグ(数値型)

endflg=1を条件にして
Aテーブル・Bテーブルを統合した日付別統計をとるには
どのようなSQL文を書けばよいのでしょうか?

A 回答 (3件)

SELECT DateValue([senddate]) AS 日付,COUNT(*) AS カウント FROM


(SELECT * FROM Aテーブル where endflg = 1
UNION ALL
SELECT * FROM Bテーブル where endflg = 1
)
GROUP BY DateValue([senddate])
でどうでしょう?

また、ある特定の日を抽出したければ、
SELECT DateValue([senddate]) AS 日付,COUNT(*) AS カウント FROM
(SELECT * FROM Aテーブル where endflg = 1
UNION ALL
SELECT * FROM Bテーブル where endflg = 1
)
GROUP BY DateValue([senddate])
HAVING DateValue([senddate]) = #2003/10/10#
でどうでしょうか?
    • good
    • 0

SELECT COUNT(*) FROM


(SELECT * FROM Aテーブル where endflg = 1
UNION ALL
SELECT * FROM Bテーブル where endflg = 1
)
WHERE senddate between '2003/10/10' AND '2003/10/11'
などとすれば2003年10月10日分のカウントでませんか?

between '2003/10/01' AND '2003/10/31'
とすれば2003年10月分のカウント

0時0分0秒の扱いが…ちょっと問題あり


厳密にということであれば
GROUP BY YEAR(senddate),MONTH(senddate),DAY(senddate)
で日ごとのカウントがとれるでしょー
    • good
    • 0

SELECT senddate,COUNT(*) FROM


(SELECT * FROM Aテーブル where endflg = 1
UNION ALL
SELECT * FROM Bテーブル where endflg = 1
)
GROUP BY senddate

でどうでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
UNION ALLで繋げることができるのですね。

ちなみにsenddateが日付/時刻型なので
これだと日付別の統計でなく時刻まで含んだグルーピングになってしまうのですが
日付に直すには、また○月分というように月を条件に日付別集計にするには
どうしたら良いのでしょうか?

お礼日時:2003/10/09 15:01

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

関連するカテゴリからQ&Aを探す


おすすめ情報