Как мне настроить динамическую переменную для количества строк, возвращаемых в SQL Server? Ниже приведен недопустимый синтаксис в SQL Server 2005 +:
DECLARE @count int
SET @count = 20
SELECT TOP @count * FROM SomeTable
Как мне настроить динамическую переменную для количества строк, возвращаемых в SQL Server? Ниже приведен недопустимый синтаксис в SQL Server 2005 +:
DECLARE @count int
SET @count = 20
SELECT TOP @count * FROM SomeTable
SELECT TOP (@count) * FROM SomeTable
Это будет работать только с SQL 2005 +
Синтаксис "select top (@var)..." работает только в SQL SERVER 2005+. Для SQL 2000 вы можете:
set rowcount @top
select * from sometable
set rowcount 0
Надеюсь, что это поможет
Oisin.
(отредактировано для замены @@rowcount с помощью rowcount - спасибо августов)
В примере x0n это должно быть:
SET ROWCOUNT @top
SELECT * from sometable
SET ROWCOUNT 0
Также возможно использовать динамический 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)
Или вы просто поместите переменную в круглые скобки
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
Пожалуйста, помогите мне, мне нужно извлечь только 95-й предмет (от самого маленького к самому большому) за продукт
например:
= ROUND (11 * (95/100), 0)
Каков наилучший способ сделать это в транзакции SQL
заранее спасибо