- ベストアンサー
Accessでのクエリ作成について
- Accessのクエリ作成について質問があります。具体的には、データマスタとクラスマスタの2つのテーブルからクエリを作成しています。
- 質問文章には、クエリ作成のためのテーブルの内容と、作成したクエリの結果が記載されています。現在、重複したデータの非表示と合計フィールドの作成に関して課題があるようです。
- 重複したデータの一行表示と1年生全組の和の表示について、どのように対応すれば良いかアドバイスを求めています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> 例として下記のような場合ですが、 > > 出席番号 入力日 学年 組 国語 算数 社会 合計 > 003 6/5 2 1 4 2 0 6 > 003 6/5 2 1 0 0 2 2 > 003 6/5 2 1 3 3 3 9 > を、 > 003 6/5 2 1 7 5 5 17 > と表示出来ればと考えています。 > > この場合ですと、最大の値を取り出すという設定は適用出来ませんので、各教科の点数の和を > 集計するような設定方法がありましたらアドバイスお願いします。 前回の回答のクエリ1を下記のようにしてください。 フィールド 集計 ---------------------------- 出席番号 グループ化 入力日 グループ化 国語: データマスタ.国語 合計 算数: データマスタ.算数 合計 算数: データマスタ.算数 合計 最大 を 合計 に変更しただけです。 > 4)につていは、上記にてクエリ2の設定内容が変わりますので、4)の設定内容にも変更 > があるのでしょうか。合わせてアドバイスいただけたらと思います。 そのままでOKです。 変更するのは クエリ1 だけです。
その他の回答 (1)
- hatena1989
- ベストアンサー率87% (378/433)
3)について 出席番号 入力日 学年 組 国語 算数 社会 合計 003 6/4 2 1 4 2 0 6 003 6/4 2 1 0 0 2 2 を、 03 6/4 2 1 4 2 2 8 にしたいということですね。 点数が 0 のデータは無視するということですが、点数の最大を取り出せばいいでしょう。 データマスタよりクエリを作成して、デザインビューで下記のように設定します。 (縦横変換してみてください。) フィールド 集計 ---------------------------- 出席番号 グループ化 入力日 グループ化 国語: データマスタ.国語 最大 算数: データマスタ.算数 最大 算数: データマスタ.算数 最大 このクエリを保存します。名前は クエリ1 これで下記のような表示になります。 出席番号 入力日 国語 算数 社会 001 6/4 2 2 3 002 6/4 3 3 2 003 6/4 1 4 2 クエリを新規作成して、上記のクエリ1とクラスマスタを追加して、出席番号で結合します。 出席番号、入力日、学年、組、国語、算数、社会 の各フィールドを表示させて、下記のフィールドを作成します。 合計: [国語]+[算数]+[社会] このクエリの名前は、クエリ2 とします。 これで、下記の出力結果。 出席番号 入力日 学年 組 国語 算数 社会 合計 001 6/4 1 2 2 3 2 7 002 6/4 1 3 3 2 1 6 003 6/4 2 1 4 2 2 8 4)について 上のクエリ2より集計クエリを作成して、下記のように設定します。 フィールド 集計 抽出条件 ---------------------------- 学年 グループ化 1 国語: クエリ2.国語 合計 算数: クエリ2.算数 合計 社会: クエリ2.社会 合計 合計: クエリ2.合計 合計 これで、下記の出力になります。 学年 国語 算数 社会 合計 1 5 5 3 13 クエリの名前は クエリ3 とします。 クエリ2 と クエリ3 をユニオンクエリで結合子ます。 ユニオンクエリはデザインビューが使えないので、SQLビューで記述する必要があります。 SELECT 出席番号, 入力日, 学年, 組, 国語, 算数, 社, 合計 FROM クエリ2 UNION ALL SELECT 9999, Null, 学年, Null, 国語, 算数, 社, 合計 FROM クエリ3 ORDER BY 学年, 出席番号; これを保存して表示すると下記の結果になります。 出席番号 入力日 学年 組 国語 算数 社会 合計 001 6/4 1 2 2 3 2 7 002 6/4 1 3 3 2 1 6 999 1 5 5 3 13 003 6/4 2 1 4 2 2 8
補足
hatena1989様 回答ありがとうございました。大変、参考になります。 私の質問の記述に誤りがありまして申し訳ないのですが、もう一度教えてください。 3)のケースなのですが、実際には入力時間の違う同一IDのレコードが数十ありまして 各教科と合計の和を一行で表示したいと考えています。0のデータは無視するというのは その通りでして、ブランクのケースもあるので、その場合は0と考える設定をしています。 例として下記のような場合ですが、 出席番号 入力日 学年 組 国語 算数 社会 合計 003 6/5 2 1 4 2 0 6 003 6/5 2 1 0 0 2 2 003 6/5 2 1 3 3 3 9 を、 003 6/5 2 1 7 5 5 17 と表示出来ればと考えています。 この場合ですと、最大の値を取り出すという設定は適用出来ませんので、各教科の点数の和を 集計するような設定方法がありましたらアドバイスお願いします。 4)につていは、上記にてクエリ2の設定内容が変わりますので、4)の設定内容にも変更 があるのでしょうか。合わせてアドバイスいただけたらと思います。 私はAccess初心者で図解シリーズやヘルプを見ながらの作業というような状況です… ユニオンクエリやSQLの知識はゼロなので、ある程度勉強してからの作業になりますが まとまった時間がとれる日にいただいたアドバイスを参考に設定し、結果を報告させて いただきます。
お礼
回答有難うございました。 ご指摘の内容でこちらの用件を満たすことが出来ました。 分かりやすい解説で大変、参考になりました。