float 値のテーブルを使用していますが、パラメーターで列を入力しています
ListVal から Aver として AVG(@var) を選択
列名 (パラメーター) を入力すると、次のエラーが表示されます。データ型 nvarchar は avg 演算子に対して有効ではありません。しかし、すべての列はフロートです。
ヘルプ!!!お願いします
float 値のテーブルを使用していますが、パラメーターで列を入力しています
ListVal から Aver として AVG(@var) を選択
列名 (パラメーター) を入力すると、次のエラーが表示されます。データ型 nvarchar は avg 演算子に対して有効ではありません。しかし、すべての列はフロートです。
ヘルプ!!!お願いします
動的 SQL を使用する必要があります
例えば
EXEC( 'SELECT AVG( [' + @var + '] ) AS Aver FROM ListVal' )
クエリ パラメーターは、列名ではなく、単一のリテラル値に置き換えます。これは標準的な SQL の動作であり、RDBMS のすべてのブランドで同じようにサポートされています。
列の名前を指定すると、次のクエリを実行したようになります。
SELECT AVG('columnname') ...
これは無意味な操作です。AVG()
文字列とは何ですか?
@Matt Rogishは、列名(またはテーブル名、またはその他のSQL構文)を動的にする唯一の方法は動的SQLを使用することであるという彼の答えで正しいです。つまり、アプリケーション変数を文字列に補間し、結果の文字列を SQL クエリとして使用します。
クエリ パラメーターは、単一のスカラー値を挿入するためだけに使用できます。これが、パラメーターがクエリで解釈される方法です。