2013-02-25 61 views
0

使用變量我想運行下面的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表(這是在觸發器中運行)。

+0

「@ ColumnName」返回的值和您的預期結果是什麼? – 2013-02-25 13:49:25

+0

在上面的例子中,select返回的值是'AlarmID',因爲INSERTED表中的AlarmID列是int,所以我期待int。 – Tim 2013-02-25 13:51:11

+0

也許你可以添加樣本記錄與所需的結果和*不相關* sql查詢。 – 2013-02-25 13:51:11

回答

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

派生自the link smoore提供。

0

使用這個,如果你想最小的變量:

SELECT @columnName = MIN(@ColumnName) FROM YourTable 
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 
    ....