SQLServer 行番号を取得する
SQLServerで行番号を取得するには
ROW_NUMBER() を使用する。
とりあえずMSDNを見てみたらこんな風に書いてあった。
ROW_NUMBER ( ) OVER ( [] )
以下のようなPersonテーブルがあるとして
ID Name Class
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
これに対して
SELECT ROW_NUMBER() OVER(ORDER BY ID DESC) RN ,* FROM Person ORDER BY ID DESC;
というクエリを投げれば結果は以下のようになる
RN ID Name Class
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
OVER内にPARTITIONを設定すればクラス毎に番号を触れる
SELECT ROW_NUMBER() OVER(PARTITION BY Class ORDER BY ID DESC) RN ,* FROM Person ORDER BY ID DESC;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
動作チェックはしたけど、コピペミスってたりするかもしれない
持ってく場合には要チェック