SQLServer2005 でページング処理を簡単にできる方法を見っけた。

ROW_NUMBER関数を使用することで、行に番号をつけて、その中から指定範囲で取得することができる。
検索しててどっかのページにあったんやけど、忘れた。
今、自分でやってるのをメモっとく。

SELECT SUB_TABLE.*
FROM
  (SELECT
     ROW_NUMBER() OVER(ORDER BY 列名1,列名3) AS rownum
     ,列名1,列名2,列名3,列名4,
   FROM
     TABLE1) AS SUB_TABLE
WHERE
  SUB_TABLE.rownum BETWEEN 11 to 20
ORDER BY
  SUB_TABLE.列名1,SUB_TABLE.列名3

これで取得結果の11行目から20行目が取得できます。
ポイントは2カ所にあるORDER BY句。
これを同じ並びにしないと、正しい結果を取得できないので注意。

これは役に立った。これで今のシステムページング処理やってるし

カテゴリー: SQLServer