0

我想运行以下 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 表(这是在触发器中运行的)。

4

3 回答 3

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

源自提供的链接

于 2013-02-25T13:57:04.127 回答
0

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

SELECT @columnName = MIN(@ColumnName) FROM YourTable
于 2013-02-25T13:54:34.943 回答
0

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

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

或者

IF @ColumnName = 'AlarmID'
  SELECT MIN(AlarmID) FROM INSERTED
ELSE
  ....
于 2013-02-25T13:56:51.067 回答