Sql server 在SELECT查询中使用变量

Sql server 在SELECT查询中使用变量,sql-server,Sql Server,我要运行以下选择查询: DECLARE @ColumnName nvarchar(50) SET @ColumnName = 'AlarmID' -- actually these are calculated -- by another SELECT but this isn't relevant SELECT MIN(@ColumnName) FROM INSERTED 这不起作用,它返回@ColumnName的值,而不是实际数据。

我要运行以下选择查询:

DECLARE @ColumnName nvarchar(50)
SET @ColumnName = 'AlarmID' -- actually these are calculated 
                            -- by another SELECT but this isn't relevant
SELECT MIN(@ColumnName) FROM INSERTED
这不起作用,它返回@ColumnName的值,而不是实际数据。我怎样才能做到这一点


我无法将SELECT放入字符串中并使用sp_executesql运行它,因为我将失去对插入表的访问权限(这是在触发器中运行的)。

如果希望将最小值作为变量,请使用此选项:

SELECT @columnName = MIN(@ColumnName) FROM YourTable

你不能真的那样做。根据@ColumnName可能值的数量,您最好使用case语句动态设置字段值,或者使用IF语句有选择地运行正确的查询:

SELECT CASE @ColumnName WHEN 'AlarmID' THEN MIN(AlarmID) WHEN 'AnotherField' THEN
MIN(AnotherField) END AS MinimumValue FROM INSERTED


从提供的smoore派生。

@ColumnName
返回的值和您的预期结果是什么?在上面的示例中,select返回的值是“AlarmID”,我希望是int,因为插入表中的AlarmID列是int。也许您可以添加具有所需结果的示例记录和不相关的sql查询。您是否尝试过此操作:另请参阅此帖子:
IF @ColumnName = 'AlarmID'
  SELECT MIN(AlarmID) FROM INSERTED
ELSE
  ....
EXEC('SELECT MIN(' + @ColumnName + ') FROM INSERTED')