- - PR -
最大値を持つテーブルのほかのカラムのみを表示させる
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2006-06-05 16:48
簡単な質問でかもしれませんが、知っている方がおりましたら回答をお願い
いたします。 現在、すべてchar型のカラムを持つ以下のテーブルがあります。 カラムA カラムB カラムC --------- -------- --------- 200604 tableA dateA 200605 tableB dateB 200606 tableC dateC これを、カラムAの数値の最も高い値を持つ(最新の日付の)テーブルの、 カラムBのみ表示させたいのですが、どのようにすればいいのでしょうか? (上記表の中から「tableC」だけを表示される方法です) また、2番目に高い数値を表示させる方法はどうすればいいのでしょうか? (上記表の中から「tableB」のみを表示さすれ方法です) 御回答、よろしくお願いいたします。 | ||||
|
投稿日時: 2006-06-05 17:28
データベースの種類が分からないのでトリアーエズこれ置いときますね。
【order by】 | ||||
|
投稿日時: 2006-06-05 17:36
すいません
oracle 10g 10.1.0.4.0 です | ||||
|
投稿日時: 2006-06-05 17:47
ORDER BYした結果をROW_NUMで抽出しちゃあかんの?
| ||||
|
投稿日時: 2006-06-05 17:47
いろいろな方法があると思いますが、
1番目、2番目共に対応しやすいのはこれかな?
最後のROWNUM=1をROWNUM=2に変えるだけで2番目になりますし。 あとはサブクエリなどを使っても実現できると思いますよ。 _________________ 夏椰 @ わんくま同盟 夏椰の庵 Microsoft MVP for Windows Server System - SQL Server ( Jul 2006 - Jun 2008 ) | ||||
|
投稿日時: 2006-06-05 17:49
夏椰氏。邪魔してすまん。
| ||||
|
投稿日時: 2006-06-05 18:45
SELECT カラムB FROM
( SELECT カラムB FROM テーブル ORDER BY カラムA DESC ) WHERE ROWNUM=1 ; ありがとうございます。 ただ、夏椰さんのご提示していただいたSQLで実行してみたのですが、 WHERE ROWNUM=1 のときは目的のテーブルを出すことができたのですが、 WHERE ROWNUM=2 のときに、 「レコードが選択されませんでした。」 の表示でレコードの取得ができません。 2番目のみの表示は別の方法のほうがいいのでしょうか? なお、where句がないときにはすべて表示できているので、 この部分が問題であると思っています。 [ メッセージ編集済み 編集者: amatsuno 編集日時 2006-06-05 18:47 ] | ||||
|
投稿日時: 2006-06-05 19:21
SELECT カラムB FROM (
SELECT ROW_NUMBER() OVER(ORDER BY カラムA desc) LINENUM, カラムA , カラムB FROM テーブル名 ORDER BY カラムA desc ) WHERE LINENUM = 2; 上記の文で2行目をとることに成功いたしました。 ご教授、ありがとうございました。 | ||||
