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')

提供されたリンクsmooreから派生。

于 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 に答える