• ベストアンサー

データベースの検索について

ORACLE8.0.5において 日付を管理するテーブル(Work)において <構成>  workday char(08) not null (key) work7day char(01) workym char(06) 上記の構成のテーブルにおいて 指定日付(例:20020125)から、5レコード目の データを抽出するときの、SQLの組み方を教えてください。 PLSQLを使用して、上記のDBをアクセスし、5レコード目 (レコードが持っている営業日)を抽出しようとしています。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • takekan
  • ベストアンサー率42% (6/14)
回答No.2

自宅にOracleの環境がありませんので検証をしていませんが、私なりに考えたSQL文です。 SELECT MIN(sub_tbl.workday) FROM ( SELECT tbl.workday FROM ( SELECT workday FROM work WHERE workday <= '20020125' ORDER BY workday DESC ) tbl WHERE ROWNUM = 6 ) sub_tbl ; 一番内側のSELECT文で、「指定日付以前の営業日を降順に抽出」 二番目のSELECT文で、「指定日付から5日前まで(6営業日分)のデータを抽出」 外側(三番目)のSELECT文で「6営業日の中で最小の営業日を抽出」 質問の要件を満たしているかどうかわかりませんが、お役に立てれば幸いです。 では

patak
質問者

お礼

上記のやり方で、何とか情報を絞り込んで抽出することができました。今回の場合は、そのSQLをWeb画面に取り込んでそこから、情報のチェックをやることになるので、もう少し、SQL文の絞込みを考えなければならないです。 ありがとうございました。

その他の回答 (1)

  • sgh
  • ベストアンサー率61% (75/121)
回答No.1

CURSORを使えば良いかと思います。 途中までソースを書いたのですが、PL/SQLはしばらくやっていないので、UPする自信がなくなりました。 あと、ご存じとは思いますが、目的のキーでソートをかけるのをお忘れなく。 すいません。こんな回答でm(_ _)m

patak
質問者

お礼

やはり、カーソルになるのですか。いろいろ考えてみます。

関連するQ&A