valor - set sql server
Use la variable con TOP en la instrucción select en SQL Server sin hacerlo dinámico (3)
En 2005 y después, puedes hacerlo, ya que hay varias respuestas en este hilo.
Lo que es menos conocido es que puedes lograr esto también en 2k, usando SET ROWCOUNT.
-- Works in all versions
SELECT TOP 10
-- Does not work on 2000
SELECT TOP (10)
SELECT TOP (@rows)
-- Works in both 2ooo and 2oo5
SET ROWCOUNT @max
SELECT *
FROM ...
SET ROWCOUNT 0
Tenga en cuenta que si olvida el SET ROWCOUNT 0 al final, el límite persistirá ... y terminará con errores muy difíciles de localizar :-)
Esta pregunta ya tiene una respuesta aquí:
- Dynamic SELECT TOP @var En SQL Server 6 respuestas
declare @top int
set @top = 5
select top @top * from tablename
¿Es posible?
¿O alguna idea para tal lógica (no quiero usar consulta dinámica)?
Sí, en SQL Server 2005 es posible usar una variable en la cláusula top
.
select top (@top) * from tablename
SQL Server 2005 en realidad nos permite parametrizar la cláusula TOP, utilizando una variable, expresión o declaración. Entonces puedes hacer cosas como:
SELECT TOP (@foo) a FROM table ORDER BY a
SELECT TOP (SELECT COUNT(*) FROM somewhere else) a FROM table ORDER BY a
SELECT TOP (@foo + 5 * 4 / 2) a FROM table ORDER BY a