我想获取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时转换失败。
答案 0 :(得分:2)
您将@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'