こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

ORACLE8.0.5において
日付を管理するテーブル(Work)において
<構成>
 workday char(08) not null (key)
work7day char(01)
workym char(06)

上記の構成のテーブルにおいて
指定日付(例:20020125)から、5レコード目の
データを抽出するときの、SQLの組み方を教えてください。
PLSQLを使用して、上記のDBをアクセスし、5レコード目
(レコードが持っている営業日)を抽出しようとしています。よろしくお願いします。

投稿日時 - 2002-01-25 19:43:56

QNo.205451

すぐに回答ほしいです

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

自宅に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営業日の中で最小の営業日を抽出」

質問の要件を満たしているかどうかわかりませんが、お役に立てれば幸いです。
では

投稿日時 - 2002-01-27 01:08:09

お礼

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

投稿日時 - 2002-01-30 13:15:48

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

sgh

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

投稿日時 - 2002-01-25 21:05:00

お礼

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

投稿日時 - 2002-01-30 13:12:26

あなたにオススメの質問