• 締切済み

アクセスのクエリ、グループ化、複数条件

お教えください。 次のようなデータを扱います。 氏名|試験日|科目|点数 AA|20110830|国語|100 AA|20110830|算数|60 AA|20110831|国語|80 AA|20110831|算数|80 BB|20110630|国語|90 BB|20110630|算数|100 CC DD ・ ・ 100点を取った日のデータに、新たにフィールドを作り、フラグを立てたいのです。(上記ではAAさんの20110830の算数のデータにも、BBさんの20110630の国語のデータにもフラグが立つように・・・) 下記のようなデータにしたい。 氏名|試験日|科目|点数|満点日 AA|20110830|国語|100|1 AA|20110830|算数|60 |1 AA|20110831|国語|80 |0 AA|20110831|算数|80 |0 BB|20110630|国語|90 |1 BB|20110630|算数|100|1 つまり、氏名と試験日が一致するもので、同じ日の点数に1つでも100が入っているデータを、ピックアップするためです。 クエリで 氏名と試験日をグループ化するところまでは行きましたが、1つでも100が入っている場合・・・というのができず。 よろしくお願いします。

みんなの回答

  • psgrade
  • ベストアンサー率86% (19/22)
回答No.4

先ず、100点を取っている、氏名、試験日を抽出するクエリーを作ります。 内容は、固有の値を「はい」にして、下記のとおりです。 100点抽出: SELECT DISTINCT T1.氏名, T1.試験日 FROM T1 WHERE (((T1.点数)=100)); 実行結果です: 氏名 試験日 AA|2011/08/30 BB|2011/06/30 次に、T1とクエリー「100点抽出」を用いて、次のようにクエリーを作ります。 氏名と試験日を繋ぐ形です。 目的の抽出: SELECT T1.氏名, T1.試験日, T1.科目, T1.点数 FROM T1 INNER JOIN 100点抽出 ON (T1.試験日 = [100点抽出].試験日) AND (T1.氏名 = [100点抽出].氏名) ORDER BY T1.氏名, T1.試験日; クエリーの実行結果です。 氏名|試験日|科目|点数 AA|2011/08/30|国語|100 AA|2011/08/30|算数|60 BB|2011/06/30|国語|90 BB|2011/06/30|算数|100 フラッグを作らなくとも、目的は達せらると思います。 これで如何ですか?

回答No.3

A____2011/11/11_国語_100_1 A____2011/11/11_算数__90_1 B____2011/11/11_国語__80_0 B____2011/11/11_算数__80_0 C____2011/11/11_国語__90_1 C____2011/11/11_算数_100_1 このような結果を得るクエリは・・・。 SELECT  氏名,  試験日,  科目,  点数,  IIf(DMax("点数","T1","氏名='" & [氏名] & "' AND 試験日=#" & [試験日] & "#")=100,1,0) AS flag FROM T1;

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.2

下記のようにすれば100点を取った人を抽出できます。 --- SELECT A.* FROM T_TABLE A INNER JOIN (SELECT 氏名,試験日 FROM T_TABLE WHERE 点数 = 100 GROUP BY 氏名,試験日) B ON A.氏名 = B.氏名 AND A.試験日 = B.試験日 100点以外の人も抽出したいときは --- SELECT A.* ,IIF(IsNULL(B.氏名),'0','1') AS フラグ FROM T_TABLE A LEFT JOIN (SELECT 氏名,試験日 FROM T_TABLE WHERE 点数 = 100 GROUP BY 氏名,試験日) B ON A.氏名 = B.氏名 AND A.試験日 = B.試験日

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

フィールドに Max([点数]) を設けて 抽出条件が 100 とすればいいのでは?

関連するQ&A

  • アクセス オプショングループで選択した条件を抽出

    先に条件を指定するフォームを作成します。 その条件の指定には、オプショングループを使います。 そのフォームに基づいたクエリを作成したいです。 例えば、国語・算数・英語 の中から一つを選択させるオプショングループを作成しておきます。 そこで選択された科目のみを抽出させるクエリを作りたいです。 (すでに氏名・科目・点数等入ったレコードソースはあります) クエリの抽出条件にはなんと入力すればよいのでしょうか。 どうぞよろしくお願いします。

  • クエリで複数条件を同時に抽出・出力する方法

    お世話になります。 ACCESSのクエリであるテーブルの入力ミスを抽出したいと考えています。 例えば、氏名と科目と点数があるとします。 No.  氏名  科目  点数 -------------------------- 01 佐藤  国語   80 02 田中  国語   45 03 鈴木  国語   60 04 佐藤  数学   75 05 田中  数学   40 06 鈴木  数学   48 ここで抽出したい条件として、国語は59点以下、数学は49点以下の抽出をしたいとして、今まではクエリの条件に1つずつ科目と点数に条件を入れ1つずつ結果を抽出をしていましたが、同時に結果を得ることができますか?また、結果をリスト表(クエリかレポート)として出力できますか? 拙い文で申し訳ありませんが、分かる方いらっしゃいましたらよろしくお願いいたします。 (スキルとして少しで、ブランクもありますがVBA,SQLです)

  • アクセス クエリーの作成

    OS:98 Access Version:97 下記のようなレコードの抽出をしたいのですが、どのようにすれば できるのか教えてください。 <テーブル1> 顧客番号 氏名   学年 曜日 時間 科目 111111 田中一郎 中1 月  A1 国語 222222 鈴木太郎 中2 水  B3 算数 111111 田中一郎 中1 月  A2 理科 222222 鈴木太郎 中2 金  B3 社会 <クエリ1> 顧客番号 氏名   学年 曜日1 時間1 科目1 曜日2 時間2 科目2 111111 田中一郎   中1 月  A1  国語  月   A2 理科 222222 鈴木太郎   中2 水  B3  算数  金   B3 社会 このようにしたいのですが、お知恵をお貸し下さい

  • Accessでのクエリ作成について

    下の2つのようなテーブルからクエリを作成しています。 (1)データマスタ(テーブル) 出席番号   入力日  入力時間  国語  算数  社会 001        6/4    14:00    2     3    2 001        6/4    14:00    2     3    2 002        6/4    15:00    3     2    1 002        6/4    15:00    3     2    1 003        6/4    16:00    4     2    0 003        6/4    16:00    4     2    0 003        6/4    17:00    0     0    2 003        6/4    17:00    0     0    2 (2)クラスマスタ(テーブル) 出席番号   学年   組 001        1    2 002        1    3 003        2    1 クエリを作成して、抽出したいデータ 1)重複したデータを非表示にしたい *レコード削除はしたくない 2)〔合計〕というフィールドを作って(国語+算数+社会)の和を表示したい 3)出席番号003のように、一日に複数回データ入力している者がいるので その者のデータは一行で和を表示させたい 4)001と002は1年生なので、1年生というくくりで各教科の和を表示させたい 私が理想としている、クエリを実行した結果 出席番号   入力日  学年  組  国語  算数  社会  合計 001        6/4    1    2   2     3    2    7 002        6/4    1    3   3     2    1    6                          5     5    3    13 *1学年の和 003        6/4    2    1   4     2    2    8 私が現在作成しているクエリの実行結果 出席番号   入力日  学年  組  国語  算数  社会  合計 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    0    6 003        6/4    2    1   0     0    2    2 1)の重複データ非表示はグループ化で用件を満たしました。 2)〔合計〕というフィールドを作っての和は、クエリで演算子を使って要件を満たしました。 合計フィールドに(国語+算数+社会)と設定して。 【質問】 3)出席番号003の、一日に複数回データ入力している者を一行で表示させることが出来ません。 入力時間の違うデータが複数あるので、003が上のように複数行で表示されてしまいます。 理想のように1行で表示するにはどうしたらよいでしょうか。 4)の1年生全組の和(ここでは1年2組と3組の各教科と合計の和)を表示させるには、 どのようにしたらよいでしょうか。 以上2点、お分かりになる方がいましたらアドバイスお願いしたいと思います。

  • accessでデータ抽出?の方法

    アクセスの初心者です。 テーブル1 生徒  教科    点数    A    国語   90   A    算数   88 B    国語   89 B    算数   97 C    算数   79 テーブル2 生徒  教科 A   算数 B   国語 テーブル1のデータをもとに、テーブル2における点数を抽出するにはどのようにクエリを作成すればよいのでしょうか。どうぞよろしくお願いします。

  • 期間指定して検索するクエリについて(Access)

    1日に複数個のデータがあり、それを毎日入力しています。 データの内容は、日付、便名、出発、到着というものです。 そのうちのある期間のデータのみを取り出すために Between [Start date] And [End date] としてクエリを実行するようにしています。 また、便名にはAAA、BBB、CCCというようなものと、AA、BB、CCのものと大まかに2種類あります。 本当は「ある期間のAAAグループのもの」を出したり、「ある期間のBBグループのもの」を出したりしたいのですが、難しかったのでAを出すクエリとBを出すクエリと2つ用意して使っています。 しかし、ある期間のAAAグループを出すクエリを実行するとその期間より前のデータも抽出されてしまいます。(Bのものでは起きません。)それには期間外のBBBやCCCも含まれています。 どうすれば指定した期間のみのA(もしくはB)ぐうーぷを取り出せるかおしえてください。 わかりにくい表現ですみません。

  • access2010 クエリの置換について

    お世話になります。アクセス初心者です。 調べてみましたが、いまいちピントこなかったので、こちらで質問させてください。 現在、以下のようなテーブルがあります。 (科目コード)(科目名) ・・  11  国語  21  古文 211  社会 212  理科 221  体育 222  英会話   ・   ・ このテーブルを用いて、クエリを作成します。テーブルのデータはそのまま残し、クエリのみ変更させます。科目コードを以下のように置き換えるように、関数を作成しました。 11→教養 21→専門 211→演習 212→演習 221→実技 222→実技  ・ 科目区分: Replace (Replace (Replace([科目名コード],"11","教養"),"21","専門"),"221","実技")   しかし、実際出てきたクエリは、  11  教養  21  専門 211  専門1 212  専門2 221  2専門 222  実技   のようになってしまいます。これを、条件のように、、“教養”、“専門”、“演習”、“実技”ときちんと置き換えることは可能でしょうか? お休みの中、申し訳ありませんが、ご回答のほどよろしくお願いします。

  • 条件に一致したデータ数について

    該当する商品の合計数を所得したいのですが検出方法が分かりませんので教えて下さい。 商品マスタ(A)と売上げデータ(B)に下記のデータがあります。AとBの関係は、1:nになります。 Bの商品とAの商品が一致した場合にAの商品が売れたと判断します。 最終的にAの一致した商品数を取得したいのですが、Bの検出数が反映されてしまい正常に一致した件数を取得できません。いろいろ試みましたけどダメでした。どなたか、ご享受下さい。 ---------------- 商品マスタ(A) ---------------- AA BB CC DD EE FF ---------------- 売上げデータ(B) ---------------- AA 06/9/10 BB 06/9/10 BB 06/9/11 DD 06/9/12 AA 06/9/14 BB 06/9/14 AA 06/9/15 AA 06/9/16 BB 06/9/17 BB 06/9/17 BB 06/9/18 ---------------- 結果 ---------------- 3 ※--- 補 足 --- Bを商品毎にグループ化してカウントすると、 AA = 4件 BB = 6件 CC = 0件 DD = 1件 EE = 0件 FF = 0件 になります。売上げ件数が、0件以上の商品は、AA、BB、DDの3商品になります。この3の値を取得したい訳です。

  • グループ後に結合させたいのですが・・

    以下の様なデータがあります。       氏名  科目 得点 1行目  Aさん  国語 100 2行目  Bさん  国語 90 3行目  Aさん  英語 80 これを以下の様な表にしようと思い、 氏名 国語 英語 Aさん 100 80 Bさん 90 - 以下のSQL分を書きましたが、Aさんの得点が2倍になってしまいます。 SELECT SL.氏名 ,SUM(KT.得点) AS '国語' ,SUM(ET.得点) AS '英語' FROM [test_db].[dbo].[得点データ] SL LEFT OUTER JOIN ( SELECT * FROM [test_db].[dbo].[得点データ] WHERE 科目='国語' ) KT ON ( KT.氏名 = SL.氏名 ) LEFT OUTER JOIN ( SELECT * FROM [test_db].[dbo].[得点データ] WHERE 科目='英語' ) ET ON ( ET.氏名 = SL.氏名 ) GROUP BY SL.氏名 原因として、グループ化が結合の後にしているのだと考えています。 どの様に修正したら、いいでしょうか?

  • ACCESS2003 追加クエリの条件設定について

    ACCESS2003 追加クエリの条件設定について 条件設定用のフォーム"A"があり、 その"A"で指定された条件を元にテーブル"B"から値を抽出し、 テーブル"C"に書き込む追加クエリを作成しています。 フォーム"A"には ・「対象日」フィールド ・「月で出力」チェックボックス テーブル"B"には ・「試験開始日」 ・「試験終了日」 ・他多数項目フィールド 追加クエリではフォーム"A"の情報を元に、テーブル"B"から 「試験開始日」:<=[Forms]![F_A]![試験開始日] 「試験終了日」:>=[Forms]![F_A]![試験開始日] と、月をまたがって実施される試験が殆どのため、「対象日」に入力された日付を 網羅するデータを取り出しています。 新たに作りたいのは、フォーム"A"の「月で出力」チェックボックスにチェックがついた 時に、フォーム"A"の「対象日」フィールドから月を取り出し、テーブル"B"の「試験開始日」 「試験終了日」それぞれで月を比較し、同じ月のデータを抽出したいのですが 追加クエリの抽出条件に下記の通り記述した所、データをヒットさせる事が出来ません。 試験開始日フィールドの抽出条件 IIf([Forms]![F_A]![月で出力]=True,Year([試験開始日])=Year([Forms][F_A]![対象日]) And Month([試験開始日])=Month([Forms]![F_A]![対象日]),[試験開始日]<=[Forms]![F_A]![対象日]) 試験終了日フィールドの抽出条件 IIf([Forms]![F_A]![月で出力]=True,Year([試験終了日])=Year([Forms][F_A]![対象日]) And Month([試験終了日])=Month([Forms]![F_A]![対象日]),[試験終了日]>=[Forms]![F_A]![対象日]) どこが問題なのでしょうか… どなたかご教授お願い致します。

専門家に質問してみよう