という障害報告をもらった。
見てみると、SQLアウトラインを出すためのSQL解析でエラーになっているので、
対象のSQLをもらってみたら、
こんな構文が書けるんだ・・・・とはじめて知りました^^(DBはOracleです)
SELECT
NO
,NAME
FROM
(
SELECT
NO
,NAME
,ROW_NUMBER() OVER(
ORDER BY
NO
) RNUM
FROM
ROWNUM_TEST
)
WHERE
RNUM BETWEEN 5 AND 10
ROW_NUMBER関数については、以下のサイトで詳しく記載してありました。
http://www.shift-the-oracle.com/sql/functions/row_number-practice.html
そいういえば、昔、階層問合せ?(connect by priorを使うやつ)を使ったことを思い出しました。
まだまだ、想定していない構文があります・・・
ちなみに、上のSQLは、DBViewer SQL Formatterで整形したものです。
# 微妙・・・・w
備忘録
・後輩に、SQL Formatterの修正依頼すること
関数の追加:row_number
キーワードの追加:partition by
※この関数はOracleだけではなく、SQLServerにもあるみたい。
0 件のコメント:
コメントを投稿