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