こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

お教えください。
次のようなデータを扱います。

氏名|試験日|科目|点数
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が入っている場合・・・というのができず。

よろしくお願いします。

投稿日時 - 2011-11-16 13:26:29

QNo.7136454

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.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

フラッグを作らなくとも、目的は達せらると思います。
これで如何ですか?

投稿日時 - 2011-11-16 21:37:07

ANo.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;

投稿日時 - 2011-11-16 17:19:38

ANo.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.試験日

投稿日時 - 2011-11-16 15:57:10

ANo.1

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

投稿日時 - 2011-11-16 13:34:57

あなたにオススメの質問