使用SELECT AVG参数“SELECT AVG(@parameter)”SQL!

时间:2009-09-24 16:02:51

标签: sql select parameters average

我正在使用浮点值表,但我按参数

输入列

SELECT AVG(@var)AS Aver 来自ListVal

当我输入列名(参数)时,我收到一个错误:数据类型nvarchar对avg运算符无效。但所有列都是浮动的。

帮助!!!请

2 个答案:

答案 0 :(得分:4)

您必须使用动态SQL

e.g。

EXEC( 'SELECT AVG( [' + @var + '] ) AS Aver FROM ListVal' )

答案 1 :(得分:2)

查询参数替代单个文字值,而不是列名。这是标准的SQL行为,在每个RDBMS品牌中都支持相同的行为。

因此,您提供了一个列的名称,就像您运行此查询一样:

SELECT AVG('columnname') ...

这是一项毫无意义的操作。什么是字符串的AVG()

@Matt Rogish在他的answer中是正确的,使列名(或表名或其他SQL语法)动态化的唯一方法是使用动态SQL。也就是说,将应用程序变量插入到字符串中,然后将结果字符串用作SQL查询。

您只能使用查询参数来注入单个标量值,这就是查询在参数中的解释方式。