質問: オラクルsqlについて 初心者です。困っています。 テーブルc 日付_番号_ステータス 1/3____1_____q 1/5____2_____r 1/6____5_____g 1/7____7_____p 1/20__ 9_____r 2/1___10_____r このようなテーブルを、1.日付順、2.番号順の優先順位で、選択していく為、下記のようなsqlを作成しました。 select 番号 from テーブルc where (to_char([日付],'yyyymmdd') || [番号]) in (select min((to_char([日付],'yyyymmdd') || [番号])) from テーブルc where (to_char([日付],'yyyymmdd') || [番号]) > (select (to_char([日付],'yyyymmdd') || [番号]) from テーブルc where [番号]=前回編集した番号)) ユニークなのは番号だけです。 これに、ステータス が rかpの場合 を加えたいだけなのですが、sqlが多くなりすぎて、困難になってしまいました・・・。 どなたかご教授頂ければ幸いです。
回答: ano.1です。 > とりあえず上記は、厳密に言うと > where [番号]=前回編集した番号) > でしょうか? すみません。そうなります。 手元にoracleの実環境がないので机上のクエリになります。 order by 句ももしかしたら()が不要かな? それと、 rownum = 1 は、rownum <= 1 が正しかったかもしれません。 ちなみに私の例は、見栄えの関係で全角スペースを入れてありますので、コピーしたままでは動かないと思います。 余談ですが、 「rownum」はクエリの結果に対する内部的なシーケンシャルナンバーです。最終結果に対して振られる番号の為、私の知っている限り「rownum > 5」等では機能しないです。この判定によって最終結果が再び変わるので機能しないのかな?と理解していますが。