Wie kann eine dynamische Variable die Anzahl der Zeilen festlegen, die in SQL Server zurückgegeben werden sollen? Unten ist keine gültige Syntax in SQL Server 2005+:
DECLARE @count int
SET @count = 20
SELECT TOP @count * FROM SomeTable
Wie kann eine dynamische Variable die Anzahl der Zeilen festlegen, die in SQL Server zurückgegeben werden sollen? Unten ist keine gültige Syntax in SQL Server 2005+:
DECLARE @count int
SET @count = 20
SELECT TOP @count * FROM SomeTable
Antworten:
SELECT TOP (@count) * FROM SomeTable
Dies funktioniert nur mit SQL 2005+
Die Syntax "select top (@var) ..." funktioniert nur in SQL SERVER 2005+. Für SQL 2000 können Sie Folgendes tun:
set rowcount @top
select * from sometable
set rowcount 0
Hoffe das hilft
Oisin.
(bearbeitet, um @@ rowcount durch rowcount zu ersetzen - danke augustlights)
In x0ns Beispiel sollte es sein:
SET ROWCOUNT @top
SELECT * from sometable
SET ROWCOUNT 0
Es ist auch möglich, dynamisches SQL zu verwenden und es mit dem Befehl exec auszuführen:
declare @sql nvarchar(200), @count int
set @count = 10
set @sql = N'select top ' + cast(@count as nvarchar(4)) + ' * from table'
exec (@sql)
Oder Sie setzen die Variable einfach in Klammern
DECLARE @top INT = 10;
SELECT TOP (@Top) *
FROM <table_name>;
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