Как получить максимум из столбца, используя динамическое имя столбца «Выбрать MAX (@variable) из таблицы» в SQL Server - PullRequest
0 голосов
/ 09 января 2019

Я хочу получить MAX столбца int, но мой столбец зацикливается на переменной.

Я пробовал это

Declare @sql nvarchar(max)
Declare @gender nvarchar(10)
Declare @max int
Declare @col int

set @col = 'UserId'
set @gender='0'
set @sql = 'Select @max  = MAX(@col) From CustomerTbl Where Gender=@gender'

print @sql

Execute sp_executesql  @sql , N'@gender nvarchar(10), @count int OUTPUT ,@col int',@gender,@max OUTPUT,@col
sELECT @max`

Я хочу максимум каждого или текущего столбца в переменной @max, но получаю ошибку

Сбой преобразования при преобразовании значения varchar 'UserId' в тип данных int.

1 Ответ

0 голосов
/ 09 января 2019

Вы объявили @col переменную как int, но вы пытаетесь установить 'UserId' текст. Это, очевидно, не может произойти.

Задать имя столбца (UserId) при создании динамического запроса:

set @sql = 'Select @max  = MAX(UserId) From CustomerTbl Where Gender=@gender'

Если вы получили имя столбца во время выполнения, измените тип переменной @col на nvarchar(128) и не используйте параметр, а объедините его:

set @sql = 'Select @max  = MAX(' + @col + ') From CustomerTbl Where Gender=@gender'
...