web-dev-qa-db-ja.com

SQL Serverの動的SELECT TOP @var

SQL Serverで返す行の量を設定する動的変数を設定するにはどうすればよいですか?以下は、SQL Server 2005+の有効な構文ではありません。

DECLARE @count int
SET @count = 20

SELECT TOP @count * FROM SomeTable
284
eddiegroves
SELECT TOP (@count) * FROM SomeTable

これはSQL 2005+でのみ機能します

513
Brian Kim

構文「select top(@var)...」は、SQL SERVER 2005+でのみ機能します。 SQL 2000では、次のことができます。

set rowcount @top

select * from sometable

set rowcount 0 

お役に立てれば

オイシン。

(@@ rowcountをrowcountに置き換えるように編集されました-augustlightsに感謝します)

38
x0n

X0nの例では、次のようになります。

SET ROWCOUNT @top

SELECT * from sometable

SET ROWCOUNT 0

http://msdn.Microsoft.com/en-us/library/ms188774.aspx

11
Codewerks
declare @rows int = 10

select top (@rows) *
from Employees
order by 1 desc -- optional to get the last records using the first column of the table
3
David Castro

動的SQLを使用して、execコマンドで実行することもできます。

declare @sql  nvarchar(200), @count int
set @count = 10
set @sql = N'select top ' + cast(@count as nvarchar(4)) + ' * from table'
exec (@sql)
3
Jan

または、変数をかっこで囲みます

DECLARE @top INT = 10;

SELECT TOP (@Top) *
FROM <table_name>;
3
ShawnThompson