SQLについて皆さんのお知恵をかしてください
以下の表 tab01から Q01の結果を取り出すSQL文です
検索条件は以下の通り
1) 表tab01から、col1,col2,col3,col4 についてQ01へ出力
2) col2(char型)について "国語","算数","理科"を抽出
3) col4(date型)について「直近」の行のみ抽出
但し、Q01.col2において同じ値が発生する場合は、tab01.col1の値が
最も大きい行を抽出する(例:02,算数と10,算数)
この要件を満たすSQL文はどう書けばよいでしょうか?
なお、DBはoracle とします
tab01
col1 col2 col3 col4
01 国語 80 20011211
02 算数 100 20011208
03 理科 80 20011201
04 国語 90 20011210
05 社会 100 20011209
06 算数 60 20011202
07 体育 80 20011205
08 国語 40 20011207
09 理科 70 20011210
10 算数 100 20011208
Q01
col1 col2 col3 col4
01 国語 80 20011211
10 算数 100 20011208
09 理科 70 20011210
どうかよろしくお願いいたします
No.1
- 回答日時:
SELECT col2, MAX(col1), MAX(col4), col3, FROM tab01
WHERE col2 IN ('国語','算数','理科')
GROUP BY col2, MAX(col1), MAX(col4)
出力されるカラムの順番が違いますがこれでお望みの出力が得られると思います。
後は出力側(帳票?)で調節すればよいでしょう。
No.2ベストアンサー
- 回答日時:
oracleは使用したことがないんですけど、下のSQLで大丈夫でしょう。
主キーはcol1と仮定しました。
------------------------------
select tab01.*
from tab01,
(select max(col1) MaxCol1
from tab01,
(select col2,max(col4) MaxCol4
from tab01
where col2 in('国語','算数','理科')
group by col2) A
where (tab01.col2=A.col2) and (tab01.col4=A.maxcol4)
group by tab01.col2)B
where tab01.col1=B.MaxCol1
--------------------------------
もっとすっきりしたSQLがあるんですどoracleで動くか分からないもので......。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel 、この式はどのように解釈すればいいのでしょうか 4 2023/02/03 08:53
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- その他(コンピューター・テクノロジー) Pythonの np.indicesに関する質問です。 2 2023/02/07 08:19
- JavaScript java keyを配列で表記したい 10 2022/12/01 17:53
- その他(プログラミング・Web制作) seleniumbasic chrome操作について 1 2023/03/29 15:40
- Excel(エクセル) Excelでこの式の意味をおしえていただけますでしょうか、またどのように理解したらいいのでしょうか 3 2022/11/18 00:11
- PHP PHP MySql ページング 2 2022/09/20 06:38
- 高校受験 英語科に行くのはアリかナシか 5 2022/11/01 23:41
- 中学校受験 中学受験 3 2022/11/13 21:17
- 中学校 理科だけが極端に苦手 5 2022/09/10 14:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Oracle SQL 結合の手法について
-
Accessで別テーブルの値をフォ...
-
select句副問い合わせ 値の個...
-
GROUP BYを行った後に結合した...
-
エクスプローラーで「2つの条件...
-
ファイル書込みで一行もしくは...
-
<SQL>条件付きで最小値レコード...
-
SQLServer 日付が直前のレコー...
-
SQL>UPDATEと同時にその件数を...
-
Access を×ボタンで閉じ...
-
sum()の出力結果順に並び替えを...
-
データセットのレコード更新が...
-
COBOLでのランダムアクセス
-
【初歩】ラジオボタンをつかっ...
-
Date型にNULLをセットしたい V...
-
チェックボックスの項目をDBにi...
-
JSPのNULLレコード表示について...
-
レコードセット(ADO.Recordset)...
-
select insertで複数テーブルか...
-
GROUP BYを使ったSELECT文の総...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL 外部結合についての質問
-
自己相関サブクエリと自己結合...
-
エラー2「無効な識別子です」
-
2つのSQL(Access)の結果[時刻,...
-
関係演算子が無効です。
-
同じテーブルをLEFT JOIN
-
SQLで後方の文字列を置換する方法
-
エラー「無効な識別子です」
-
LEFT JOINの条件式で=’’を使用...
-
Excel VBAで、Averageの範囲を...
-
エクセルVBAでSUM関数の位置を...
-
GROUP BYを行った後に結合した...
-
Accessで別テーブルの値をフォ...
-
Oracleでの文字列連結サイズの上限
-
SELECTで1件のみ取得するには?
-
SQL文で右から1文字だけ削除す...
-
GROUP BYを使ったSELECT文の総...
-
select句副問い合わせ 値の個...
-
レコードが存在しなかった場合
-
ADO VBA 実行時エラー3021
おすすめ情報