Access97のVBAで開発を行っています。SQLでデータの抽出で、あるフィールドの最大値を条件に指定して抽出する方法を教えてください。最大値という曖昧な条件なため、悩んでいます。
(例)ある学校の成績テーブル(左から、学籍番号,組,氏名,性別,科目,点数)
0103,鈴木,男,国語,95
0103,鈴木,男,数学,40
0103,鈴木,男,英語,80
0104,高橋,男,国語,45
0104,高橋,男,数学,85
0104,高橋,男,英語,55
|
|(SQLで各人の最高点のデータのみ抽出したい)
↓
(抽出結果)
0103,鈴木,男,国語,95
0104,高橋,男,数学,85
知っている方、是非教えてください。
お願いします。
No.3ベストアンサー
- 回答日時:
クエリーを使えば比較的楽に出来るでしょうがひとつのSQLでやるのは少々難しいように思います。
そこで、SQLを二回に分けて結果を出してはどうでしょうか。最初に学籍番号と点数だけで「SELECT 学籍番号, Max(点数) AS 最高点 FROM 成績テーブル GROUP BY 学籍;」とし、個人別の最高点を抽出します。 そして、それをもとに「SELECT * FROM 成績テーブル WHERE 学籍番号 = 最高点のSQLの学籍番号 AND 点数 = 最高点のSQLの最高点;」とし、必要なほかの情報(氏名、性別、科目)を持ってきます。
【例】
Dim db As database
Dim rs1 As recordset
Dim rs2 As recordset
Set db=CurrentDb
Set rs1=db.OpenRecordset("SELECT 学籍番号, Max(点数) AS 最高点 FROM 成績テーブル GROUP BY 学籍;",dbOpenDynaset)
rs1.MoveFirst
Set rs2=db.OpenRecordset("SELECT * FROM 成績テーブル WHERE 学籍番号 = '" & rs1("学籍番号") & "' AND 点数 = " & rs1("最高点") & ";",dbOpenDynaset)
rs2.MoveFirst
後はrs2("学籍番号")、rs2("氏名")等の必要な情報を必要に応じて操作すれば
よろしいのではないでしょうか。
No.2
- 回答日時:
select * from 成績
where (氏名,点数) in
( select 氏名, max(点数) from 成績 group by 氏名);
で正しい答えが返ってくるのでしょう。
違っていたらごめんなさい。
No.1
- 回答日時:
業務で行っていると判断しました(違ったら補足下さい)。
上記の理由から、ヒントだけ...。
MAX() 関数かORDER BYを使うと比較的簡単に抽出出来ます。
ちょっと凝った作りになっていると、一度全部を表示するクエリーを作成して、その後Maxを使用して最大値を表示するクエリーを作った方が処理時間が短くなります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
ACCESSのMax(Min)関数使用方法
Access(アクセス)
-
Access 各レコードの中での最大フィールドを抽出したい
Access(アクセス)
-
グループ毎の最大値を持つデータのみ抽出したい
SQL Server
-
-
4
ACCESS クエリで重複データを最新の1件だけ表示
Access(アクセス)
-
5
オープンしているレコードセットの中の最大値
その他(データベース)
-
6
ACCESS 一番最新の日付の金額を出したいのですが・・
その他(データベース)
-
7
前のレコードの値を自動で入れたい
PowerPoint(パワーポイント)
-
8
ACCESSにてフィールド間の最小値を表示するためのモジュール
その他(データベース)
-
9
AccessのDMax関数の複数条件式に関して
Access(アクセス)
-
10
Accessのサブフォームから値を参照する方法について
その他(データベース)
-
11
ACCESS 「パラメータの入力」を消したい!!
Access(アクセス)
-
12
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
13
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
14
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
15
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
16
Accessで今日から5日後
その他(データベース)
-
17
ACCESSで、DMax関数の条件の書き方
Access(アクセス)
-
18
アクセスのエラー「クエリには出力フィールドが1つ以上必要です。」
その他(Microsoft Office)
-
19
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
20
ACCESS クエリの抽出条件に他のテーブルの値を参照する方法
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
あるフィールドの最大値を条件...
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
Accessでテーブル名やクエリ名...
-
複数のレコードを1つのレコード...
-
Accessフォームにクロス集計ク...
-
Access VBAで自動連番を振るには
-
空白をそのままインポートする...
-
Accessでコードを入れると名前...
-
accessで重複を防ぎたい
-
アクセスでオートナンバーをリ...
-
Accessでvlookupみたいなことは...
-
ACCESSのクエリで集計で、先頭...
-
APN設定について教えていただけ...
-
ACCESS レーダーチャートのデー...
-
必須入力項目と入力必須項目
-
accessで指定期間の曜日カウン...
-
ACCESSでの改行コード
-
作番ってどういう意味でしょうか?
-
Joy To Keyのマウスやキーボー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アクセスのテーブルを分ける理...
-
Accessの帳票フォームで重複デ...
-
Accessフォーム全レコードをPDF...
-
Access2021 「ISNULL関数には引...
-
あるフィールドの最大値を条件...
-
ACCESS VBA クエリを開く
-
MS ACCESS 商品価格変更時の該...
-
曜日を表す項目
-
集計結果を別テーブルに更新ク...
-
【Accessクエリ】存在しないデ...
-
usingの意味がわからないのですが
-
SQL EXISTS演算子について
-
Accessについて(DLOOKUP関数、...
-
【Access2000】マシンIDの取得方法
-
正規形の定義
-
Accessでクエリの作成、多対1対...
-
accessでの請求管理について
-
請求先
-
どうやって正規化するかを教え...
-
SQLの作り方
おすすめ情報