【SQL Server】上位X件のレコードを取得する ~Top句~

Top句

 * 先頭行を指定して抽出する

 * 変数が使えるようになるのは、SQL Server 2005から。
   ただし、括弧が必要である。

 SELECT TOP(@変数) * FROM ...

サンプル

DECLARE @topNum AS int = 10;
SELECT TOP(@topNum) * FROM TestTable

使用上の注意

 * 「TOP(X)」を使うと、最後が同じだった場合、問答無用で切り捨てられてしまう

 例)上位3位だけ取得する場合

    Runk  Sales  Customer
   ----------------------
  1     1000   Mike 
  2      900   Tom
  3      750   John
  3      750   Kevin <--- TOP(3) だと以降のデータが取得できない
  3      750   Ken
  6      600   Tom

対処方法は以下の記事を参照のこと
http://blogs.yahoo.co.jp/dk521123/29806532.html