在SELECT查询中使用变量

时间:2013-02-25 13:47:35

标签: sql-server

我想运行以下SELECT查询:

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运行它,因为我将无法访问INSERTED表(这是在触发器中运行)。

3 个答案:

答案 0 :(得分:1)

EXEC('SELECT MIN(' + @ColumnName + ') FROM INSERTED')

来自the link smoreore提供的。

答案 1 :(得分:0)

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

SELECT @columnName = MIN(@ColumnName) FROM YourTable

答案 2 :(得分:0)

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

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

OR

IF @ColumnName = 'AlarmID'
  SELECT MIN(AlarmID) FROM INSERTED
ELSE
  ....