SQL Severではテーブルの途中にある行を抽出する、ずばりなやり方が存在しないのはリファレンスで知っていました。
今回はテーブル変数に格納する必要があるので、delete を行って常に先頭から取り出せるように考えてみました。
すると、「不適切な構文」という意気消沈なメッセージが・・・。
「無関係だろうな~。」と思いつつ、
insert into
@テーブル変数
select top isnull(@int変数, 0) .....
としてみるものの、やはり駄目。
「もしかしてtopには変数が使えない??」と一瞬頭をよぎりました。
~結~
不安を解消すべく、「sql server top」で調査していると、Tech Netの以下の表現が気になりました。
"TOP (n) 句を使用した場合"
http://technet.microsoft.com/ja-jp/library/ms175486.aspxより引用
何の期待もなしに括弧を付けてみたところ、変数でも通るようになりました。
果てしなく遠いSQL Server マスターへの道のり...
~アフターフォロー~
TOP (Transact-SQL)
http://technet.microsoft.com/ja-jp/library/ms189463.aspx
よぎった不安についてですが、2005から変数が使えるようになったようです。(調査中)