from - select top variable sql server
SELECT TOP dinĂ¡mico @var en SQL Server (6)
¿Cómo puedo tener una variable dinámica que establezca la cantidad de filas para devolver en SQL Server? A continuación no hay una sintaxis válida en SQL Server 2005+:
DECLARE @count int
SET @count = 20
SELECT TOP @count * FROM SomeTable
En el ejemplo de x0n, debería ser:
SET ROWCOUNT @top
SELECT * from sometable
SET ROWCOUNT 0
La sintaxis "select top (@var) ..." solo funciona en SQL SERVER 2005+. Para SQL 2000, puedes hacer:
set rowcount @top
select * from sometable
set rowcount 0
Espero que esto ayude
Oisin.
(editado para reemplazar @@ rowcount con rowcount - gracias augustlights)
O simplemente pones la variable entre paréntesis
DECLARE @top INT = 10;
SELECT TOP (@Top) *
FROM <table_name>;
También es posible usar SQL dinámico y ejecutarlo con el comando exec:
declare @sql nvarchar(200), @count int
set @count = 10
set @sql = N''select top '' + cast(@count as nvarchar(4)) + '' * from table''
exec (@sql)
SELECT TOP (@count) * FROM SomeTable
Esto solo funcionará con SQL 2005+
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