首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用SQL Server中的动态列名“从表中选择最大(@变量)”从列中获得最大值

问如何使用SQL Server中的动态列名“从表中选择最大(@变量)”从列中获得最大值
EN

Stack Overflow用户
提问于 2019-01-09 06:43:56
回答 1查看 479关注 0票数 0

我想获得MAX的int列,但我的列是循环变量。

我试过这个

代码语言:javascript
复制
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时,转换失败。

EN

回答 1

Stack Overflow用户

发布于 2019-01-09 06:53:22

您将@col变量声明为int,但您正在尝试设置'UserId'文本。这显然是不可能发生的。

在构造动态查询时设置列名(UserId):

代码语言:javascript
复制
set @sql = 'Select @max  = MAX(UserId) From CustomerTbl Where Gender=@gender'

如果获得列名运行时,则将@col变量的类型更改为nvarchar(128),不使用参数,但将其连接起来:

代码语言:javascript
复制
set @sql = 'Select @max  = MAX(' + @col + ') From CustomerTbl Where Gender=@gender'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54104514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档