Хранимая процедура SQL Server, которая позволяет получить наибольшее числовое значений указанной колонки, в указанной таблице. В процедуру также можно передать минимальное числовое значение, с которого будет производиться поиск максимального значения.
Инструкции
Использовать, например так: exec nth 'users', 'id', 1
Код
CREATE PROC nth
(
@table_name sysname,
@column_name sysname,
@nth int
)
AS
BEGIN
-- exec nth 'users', 'id', 1
SET @table_name = RTRIM(@table_name)
SET @column_name = RTRIM(@column_name)
DECLARE @exec_str CHAR(400)
IF (SELECT OBJECT_ID(@table_name,'U')) IS NULL
BEGIN
RAISERROR('Invalid table name',18,1)
RETURN -1
END
IF NOT EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @table_name AND COLUMN_NAME = @column_name)
BEGIN
RAISERROR('Invalid column name',18,1)
RETURN -1
END
IF @nth <= 0
BEGIN
RAISERROR('nth highest number should be greater than Zero',18,1)
RETURN -1
END
SET @exec_str = 'SELECT MAX(' + @column_name + ') from ' + @table_name + ' WHERE ' + @column_name + ' NOT IN ( SELECT TOP ' + LTRIM(STR(@nth - 1)) + ' ' + @column_name + ' FROM ' + @table_name + ' ORDER BY ' + @column_name + ' DESC )'
EXEC (@exec_str)
END
Добавлять комментарии могут только зарегистрированные пользователи сайта.
Если у Вас уже есть учетная запись на Kbyte.Ru, пройдите процедуру авторизации.
Если Вы еще не зарегистрированы на Kbyte.Ru - зарегистрируйтесь.