- ベストアンサー
オラクルSQL初心者の困りごと
- オラクルSQLでテーブルCから日付順、番号順の優先順位で選択するためのSQLを作成したが、ステータスがRかPの場合を追加するのが難しい。
- テーブルCは日付と番号の情報を持っており、ユニークなのは番号だけ。
- どなたか、ステータスがRかPの場合を追加する方法について教えていただきたい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ANo.1です。 > とりあえず上記は、厳密に言うと > WHERE [番号]=前回編集した番号) > でしょうか? すみません。そうなります。 手元にOracleの実環境がないので机上のクエリになります。 Order By 句ももしかしたら()が不要かな? それと、 ROWNUM = 1 は、ROWNUM <= 1 が正しかったかもしれません。 ちなみに私の例は、見栄えの関係で全角スペースを入れてありますので、コピーしたままでは動かないと思います。 余談ですが、 「ROWNUM」はクエリの結果に対する内部的なシーケンシャルナンバーです。最終結果に対して振られる番号の為、私の知っている限り「ROWNUM > 5」等では機能しないです。この判定によって最終結果が再び変わるので機能しないのかな?と理解していますが。
その他の回答 (1)
- Tiffa9900
- ベストアンサー率31% (68/216)
RかPの場合っていうのは、 Rの場合のみとか、Pの場合のみとかってことかなぁ? SELECT * FROM テーブルC WHERE ROWNUM = 1 AND [ステータス] = 'R' AND (TO_CHAR([日付],'yyyyMMdd') || [番号]) > (SELECT (TO_CHAR([日付],'yyyyMMdd') || [番号]) FROM テーブルC WHERE [番号]=前回編集した番号)) ORDER BY (TO_CHAR([日付],'yyyyMMdd') || [番号]) だとシンプルかな。
お礼
Rの場合のみとか、Pの場合のみとかのことです。 ありがとうございます! シンプルになると嬉しいです。 上記試してみましたが、なかなか動きません・・・。 WHERE [番号]=前回編集した番号)) とりあえず上記は、厳密に言うと WHERE [番号]=前回編集した番号) でしょうか?
お礼
ありがとうございました! 参考にしてできました。