在SELECT查询
问题描述:
使用变量我想运行下面的SELECT查询:在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表(这是在触发器中运行)。
答
使用这个,如果你想最小的变量:
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
OR
IF @ColumnName = 'AlarmID'
SELECT MIN(AlarmID) FROM INSERTED
ELSE
....
“@ ColumnName”返回的值和您的预期结果是什么? – 2013-02-25 13:49:25
在上面的例子中,select返回的值是'AlarmID',因为INSERTED表中的AlarmID列是int,所以我期待int。 – Tim 2013-02-25 13:51:11
也许你可以添加样本记录与所需的结果和*不相关* sql查询。 – 2013-02-25 13:51:11