- ベストアンサー
Access 異なるフィールドの集計方法について
Access初心者です。 異なるフィールド名の集計方法を教えて下さい。 例えば、コース1、コース2、コース3というフィールド名があって コース1にはABC、コース2にはDEF、コース3にはGHIというのがあって コース1~コース3の集計を下記のようにまとめたい場合はどうしたらいいでしょうか? ABCDEFGHIと1列にまとめて表示させたいです。 よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
組み替えにはユニオンクエリを使います ユニオンクエリはクエリデザインビューでは作れません SQLビューで作成します テーブルは前回回答のとおりだとして select 氏名,日付,コース1 as コース from テーブル名 union all select 氏名,日付,コース2 as コース from テーブル名 union all select 氏名,日付,コース3 as コース from テーブル名 まず氏名、日付、コース1を取り出すクエリを作成し SQLビューで表示してそれを元に上のようなものを作成します ほとんど繰り返しですから一つ目をコピーして異なるところだけ書き換えるといいですよ
その他の回答 (5)
- CHRONOS_0
- ベストアンサー率54% (457/838)
氏名 日付 コース1 コース2 コース3 X 2008/6/17 A B C Y 2008/6/17 A D F のような非正規形のテーブルを 氏名 日付 コース X 2008/6/17 A X 2008/6/17 B ・ ・ Y 2008/6/17 F のような正規形のテーブルに組み替えたいということですか
補足
はい、その通りなんです。 可能でしょうか。 何度も申し訳ありませんが、よろしくお願い致します。
- laputart
- ベストアンサー率34% (288/843)
文字列の加工はたいていの事が出来ますので、もう一度説明をお願いします。補足説明を読みましたが、余計にわからなくなりました。 ■異なるフィールドを繋げる事は出来ます。 ■「縦1列にまとめて表示させたい」というのが理会出来ません。 (1)フォームやレポートの表示が縦一列ですか? (2)それとも各レコードに1文字づつ入れたテーブルが必要ですか? ※(1)の場合はフォームやレポートのデザインだけで作業が出来ると思います。 (2)の場合もたいていの場合クエリで加工すればいいのですが 基本的に毎日変化する ABC....を日付の情報とともに管理するので あれば、1つの元テーブルだけを持つだけでよいはずです。 縦一列の意味と役割について もう一度説明してください。
補足
何度も申し訳ありません。 縦1列にまとめて表示させたいというのは、 フォームやレポートの表示が縦一列というのではなく、 例えば新規にクエリーを作成して、 "コースまとめ"というフィールドを作って そこにコース1~コース3のデータをまとめて一列で表示させたいのです。 うまく説明できず申し訳ありません。 例えば、 日付 コースまとめ 6/17 A (…コース1) 6/17 B (…コース2) 6/17 C (…コース3) という感じなんです。 意味は、1日に受けつけたコースの集約リストを作成したいからです。 こういうのを、クエリーで作成する場合の方法を教えて下さい。 ホントに何度もすみませんが、よろしくお願い致します。
- laputart
- ベストアンサー率34% (288/843)
まず、数字ではなくて文字列である場合について説明します。 ご質問の内容では、コース1、コース2、コース3の文字列を順に繋げる方法で説明します。 (1)そのテーブルから選択クエリーを作ります。 (2)クエリーの編集で新しいフィールドを作成します フィールド名に 合計:[コース1]&[コース2]&[コース3] とすると3つのフィールドの文字列がつながります。 数字フィールドの場合は [ ]+[ ] などの演算が出来ます。 ことなる種類のフィールドをつなげる事は出来ません。 ※上記の説明でちょっと不親切なら改めて質問をしてください。
補足
詳しい説明ありがとうございます。 コース1~コース3は文字列なのですが、 新規クエリでも、同じクエリの別フィールドでもどちらでもいいのですが、 縦1列にまとめて表示させたいのです。 文字列の種類は同じなのですが、 異なるフィールドをつなげる事はやはり出来ないでしょうか・・・ 例えば、今日、 Xさんが、コース1=A コース2=B コース3=Cを選んだ場合 Yさんが、コース1=A コース2=D コース3=Fを選んだ場合 A B C A(←Aは重複表示でもグループ化されていてもどちらでもいいです) D F というような感じで、日にち毎にコース1~3の文字列を 合体させて表示させる方法はないでしょうか? よろしくお願い致します。
- imogasi
- ベストアンサー率27% (4737/17069)
コース1、コース2、コース3のデータは文字列ですか? 挙げた例があいまいではっきりしない。 例えば コース1 東京都 コース2 大田区 コース3 田園調布 とあって、 3つ以外のフィードに「東京都大田区田園調布」と入れたいのでしょうか。 これらは文字列結合といい、アクセスでは「&」(半角)を使って並べるだけ。「集計」ではない。 ーー 上記の例でなく、何か件数カウントや数値の集計なら、質問を訂正 し、具体例を挙げること。
補足
詳しい説明ありがとうございます。 文字列結合ではなく、 縦1列にまとめたいのです。 コース1~コース3は文字列なのですが、 下記のようにどうしても、横にコースを並べる必要があるのですが、 例えば、1日あたりの、コース1~3でAが何件か?を集計する為に コース1~3を合体させて縦1列にしたいのです。 例えば、 Xさんが、コース1=A コース2=B コース3=Cを選んだ場合 Yさんが、コース1=A コース2=D コース3=Fを選んだ場合 受付コースというフィールドを作成して A B C A(←Aは重複表示でもグループ化されていてもどちらでもいいです) D F というような感じで、日にち毎にコース1~3の文字列を 合体させて表示させる方法はないでしょうか? つたない説明で申し訳ありません。 よろしくお願い致します。
- CHRONOS_0
- ベストアンサー率54% (457/838)
3つのコース名を結合するだけでいいのですか? 文字の結合には&演算子を使います [コース1] & [コース2] & [コース3] こんなのは集計とはいいませんよ それに同種のものを横に並べているテーブル構造は再検討した方がいい ように思いますね
お礼
ちゃんと出来ました!! 的確な回答ありがとうございました!