2007/01/28

SQL ROW_NUMBER()

以前にOracleでselect実行時に行範囲をするのに Row_Number()を使ってたんですが、SQLServerだと簡単には出来なかったんですが、ちょっと勘違いして書いてしまったSQL文が通ってちょっとビックリしました。

SQLServer 2005から実装されのかなと。

MSDN Onlineで見たら、ページ指定のやり方のサンプルとかこんな感じで出てました。



DECLARE @pagenum AS INT, @pagesize AS INT
SET @pagenum = 2
SET @pagesize = 3
SELECT *
FROM (SELECT ROW_NUMBER() OVER(ORDER BY score DESC, speaker) AS rownum,
speaker, track, score
FROM SpeakerStats) AS D
WHERE rownum BETWEEN (@pagenum-1)*@pagesize+1 AND @pagenum*@pagesize
ORDER BY score DESC, speaker

なんか要望というか待望してたけど忘れた頃に使えるようになってて、ちょっと嬉しい感じ。

もうそんなにOracle使うこともないんですが、SQLServerも自分でインストールして設定・チューニングとかはもうツラくなってきてたりもします。自分の環境はVisual Studioと一緒にインストールされるDeveloperなバージョンで十分だし。

こんな感じなんでDB系のSpecialistとかの方とは仲良くしてたいです。

関連のありそうな記事

0 コメント: