- ベストアンサー
Accessで複数条件で顧客情報をデータベース化する方法
- Accessで顧客情報のデータベースを作成し、過去の購入履歴を一覧で表示する方法について説明します。
- 購入日をもとに、2012年上期、2012年下期、2013年上期にそれぞれ購入があったかどうかをチェックするクエリを作成する方法を解説します。
- Access2002を使用している場合、会員IDが重複しているためレコードをまとめることができない問題が発生します。この問題についても解決策を提案します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
SELECT お客様リスト.会員ID, お客様リスト.会員氏名, Max(IIf(購入日>=#1/1/2012# And 購入日<=#6/30/2012#,"●","")) AS 2012上期, Max(IIf(購入日>=#7/1/2012# And 購入日<=#12/31/2012#,"●","")) AS 2012下期, Max(IIf(購入日>=#1/1/2013# And 購入日<=#6/30/2013#,"●","")) AS 2013上期 FROM お客様リスト WHERE (((お客様リスト.購入日)>=#1/1/2012# And (お客様リスト.購入日)<=#6/30/2013#)) GROUP BY お客様リスト.会員ID, お客様リスト.会員氏名; 最期のWHERE条件は、名簿に居るけど、どの期間にも購入が無い場合に、リストに出ないようにする為のもの。
その他の回答 (3)
- piroin654
- ベストアンサー率75% (692/917)
No3です。列の入れ替えは一度閉じて 再度表示すると列がばらばらになるかも しれませんが、もう一度列を入れ替えて 保存すれば固定されると思いますが。
- piroin654
- ベストアンサー率75% (692/917)
二つクエリを作って表示してみます。 一番目の選択クエリは名前を「クエリ1」 としています。二番目のクエリは クロス集計クエリです。 クエリ1 SELECT お客様リスト.会員ID, お客様リスト.会員氏名, お客様リスト.購入日, IIf(Month([購入日])>=1 And Month([購入日])<=6,Year([購入日]) & "年上期",Year([購入日]) & "年下期") AS 時期 FROM お客様リスト; 表示クエリ TRANSFORM Count(クエリ1.会員氏名) AS 会員氏名のカウント SELECT クエリ1.会員ID, クエリ1.会員氏名 FROM クエリ1 GROUP BY クエリ1.会員ID, クエリ1.会員氏名 PIVOT クエリ1.時期; 表示クエリのデザインビューで、「カウント: 会員氏名」 というフィールドの上で右クリックして、プロパティ を選択し、フィールドのプロパティを表示し、 「書式」のところに「●」を入れます。 なお、時期の表示が同じ年度では下期が先にくると 思いますが、クエリを表示して一つの列を選択して 列を入れ替えて保存すればよろしいかと。
お礼
piroin654 さん、 御礼が遅くなりました。 分かりやすい回答をありがとうございます。 早速試してみたところ、思っていた以上のものが出来ました。 購入日から年を取り出しているので、今後の追加もしやすそうです。 下手な説明からここまでくみ取ってくださり、ありがとうございます。 追加で失礼します。 chie65535 さん、 こちらのサイトの使い方に慣れておらず、解決済みにしてしまいました。 質問を投げておきながら、失礼しました。 投稿できなくなってしまったので、なんとかやってみます。 また、壁に当たったら頼らせていただきます。 その時はどうぞよろしくお願いします! とりあえずはこの資料が出来たので提出できます。 迅速、ご丁寧なご協力、本当にありがとうございました。
- chie65536(@chie65535)
- ベストアンサー率44% (8742/19841)
>「抽出条件でデータ型が一致しません」と表示されます。 >テーブル[お客様リスト]の フィールド[購入日]のデータ型は日付・時刻型です。 [購入日]は日付時刻型でOKです。 当方のAccessでは、日付定数の指定が「#月/日/年#」になっているので、Accessの設定が異なっている場合は、SQL文の日付指定部分を「#年/月/日#」に書き換えないと、上手く行かないかもしれません。 >クエリを新規に作成して、sqlビューに入力する方法で良いのですよね? それでOKです。
お礼
chie65535さん 日付指定部分を変更したら、出来ました!! ありがとうございます!!! これまで何日も四苦八苦していたので、感動です! 丁寧に回答してくださり、本当にありがとうございます。 甘えてもう一つお尋ねしてもいいでしょうか。 上記のデータで、 [2012上期][2013上期]が●のデータだけを表示 なんてことも可能でしょうか? もう少しだけ教えてください。 よろしくお願いします!
お礼
chie65535さん、早速のご回答ありがとうございます。 教えていただいた構文を入力してみたのですが、 実行しても、うまくいきません。 フィールド名は表示されているのですが、中身が空になります。 クエリを新規に作成して、sqlビューに入力する方法で良いのですよね?
補足
「抽出条件でデータ型が一致しません」と表示されます。 テーブル[お客様リスト]の フィールド[購入日]のデータ型は日付・時刻型です。