Dynamic SELECT TOP @var In SQL Server
Comment puis-je avoir une variable dynamique définissant le nombre de lignes à retourner dans SQL Server? Ci-dessous n'est pas une syntaxe valide dans SQL Server 2005+:
DECLARE @count int
SET @count = 20
SELECT TOP @count * FROM SomeTable
255
demandé sur
Brian Kim
2008-10-07 00:05:42
6 réponses
SELECT TOP (@count) * FROM SomeTable
cela ne fonctionnera qu'avec SQL 2005+
462
répondu
Brian Kim
2008-10-06 20:06:25
la syntaxe" sélectionnez top (@var) ..."ne fonctionne que dans SQL SERVER 2005+. Pour SQL 2000, vous pouvez faire:
set rowcount @top
select * from sometable
set rowcount 0
Espérons que cette aide
Oisin.
(modifié pour remplacer @@rowcount par rowcount-merci augustlights)
37
répondu
x0n
2008-10-06 22:23:14
dans l'exemple de x0n, il devrait être:
SET ROWCOUNT @top
SELECT * from sometable
SET ROWCOUNT 0
11
répondu
Codewerks
2008-10-06 21:26:55
il est également possible d'utiliser dynamic SQL et de l'exécuter avec la commande 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
répondu
Jan
2008-10-07 08:37:22
ou vous mettez juste la variable entre parenthèses
DECLARE @top INT = 10;
SELECT TOP (@Top) *
FROM <table_name>;
3
répondu
ShawnThompson
2016-01-07 19:38:31
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
2
répondu
David Castro
2018-08-23 17:17:47