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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
- 大学受験 数学が苦手で社会が得意な場合は一橋よりも東大の方が受かりやすい、ということはあり得ますか? 3 2022/04/16 16:46
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- 大学受験 志望校が決まらない 4 2022/07/10 00:07
- Excel(エクセル) マクロか関数で処理したいのですが、教えて頂けませんか。 8 2022/10/31 15:18
- PHP MySql PHP 2つのテーブルをJOINで結合 user_idで抽出 1 2023/01/03 14:04
- 大学受験 受験についての質問です。 現在高校2年生、男。 中学数学は完璧に固まっているのですが、 高校に入り、 6 2023/08/16 15:51
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
ACCESSのMax(Min)関数使用方法
Access(アクセス)
-
Access 各レコードの中での最大フィールドを抽出したい
Access(アクセス)
-
AccessのDMax関数の複数条件式に関して
Access(アクセス)
-
-
4
ACCESS 一番最新の日付の金額を出したいのですが・・
その他(データベース)
-
5
グループ毎の最大値を持つデータのみ抽出したい
SQL Server
-
6
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
7
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
8
前のレコードの値を自動で入れたい
PowerPoint(パワーポイント)
-
9
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
10
「#エラー」の回避
Access(アクセス)
-
11
ACCESS IIF関数 複数条件の設定について
Excel(エクセル)
-
12
最新日のデータのみ抽出するクエリを教えて下さい
Access(アクセス)
-
13
ACCESS クエリで重複データを最新の1件だけ表示
Access(アクセス)
-
14
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
15
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
16
【Access】選択クエリのグループ化で最大日付の中の最大IDを抽出する方法?
Windows 95・98
-
17
ACCESSのクエリで集計で、先頭・最後とは?
その他(データベース)
-
18
【ACCESS/必須条件とOR条件を組み合わせる】
その他(Microsoft Office)
-
19
ACCESSにてフィールド間の最小値を表示するためのモジュール
その他(データベース)
-
20
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
あるフィールドの最大値を条件...
-
usingの意味がわからないのですが
-
Accessの帳票フォームで重複デ...
-
ACCESS VBA クエリを開く
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
Oracle 2つのDate型の値の差を...
-
エクセルVBAで5行目からオート...
-
Accessでテーブルの値をテキス...
-
ACCESSで400以上のフィールドが...
-
Accessで数値型にNULLをInsert...
-
Accessのフィールド数が255しか...
-
Access テキスト型に対する指定...
-
ORACLEでLONG項目からCHAR項目...
-
ACCESSで和暦を西暦に・・・
-
他テーブルで一致する列から名...
-
Access IF文でテーブルに存在し...
-
作番ってどういう意味でしょうか?
-
Accessでテーブル名やクエリ名...
-
アクセス エラーを数値「0」に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access2021 「ISNULL関数には引...
-
accessでの請求管理について
-
accessでのフォームの連携について
-
あるフィールドの最大値を条件...
-
accessについて
-
usingの意味がわからないのですが
-
Accessフォーム全レコードをPDF...
-
アクセスのテーブルを分ける理...
-
Accessの帳票フォームで重複デ...
-
MS ACCESS 商品価格変更時の該...
-
フィールド名が取得したい
-
曜日を表す項目
-
SQL EXISTS演算子について
-
ACCESS VBA クエリを開く
-
SQL Server 2005 Expressで営業...
-
Accessでクエリの作成、多対1対...
-
集計結果を別テーブルに更新ク...
-
受注明細テーブルについて
-
ACCESS データシートビューでの...
-
SQLコマンドのorder by句
おすすめ情報