我正在使用 SQL Server 2008 R2,但我的动态 T-SQL 查询遇到了问题。我相信这与我的语法有关,但是当从动态 T-SQL 上下文中取出时,它可以在新的查询窗口中运行。当作为存储过程运行时,有时会出现以下错误:
选择列表中的列
dbo.Birds.weight
无效,因为它既不包含在聚合函数中,也不包含在GROUP BY
子句中。
T-SQL 代码:
set @sql =
N'select FLOOR(dbo.Birds.weight * @INPUTconversion)*@INPUTinterval as ''Weight'',
COUNT(1) as ''Count''
FROM dbo.Birds
WHERE
weight >= @INPUTminwgt AND
weight <= @INPUTmaxwgt
GROUP BY FLOOR(weight*@INPUTconversion)
order by weight asc'
set @params =
N'@INPUTminwgt float,
@INPUTmaxwgt float,
@INPUTconversion float,
@INPUTinterval float';
exec sp_executesql @sql, @params,
@INPUTminwgt = @BirdMinWeight,
@INPUTmaxwgt = @BirdMaxWeight,
@INPUTconversion = @conversion,
@INPUTinterval = @interval;
权重到小数点后 1000 位(例如 3.154)
@INPUTconversion = 1/interval
查询应返回按间隔分组的最小和最大重量参数之间的权重(例如,0.1 间隔将类似于 1.1、1.2、1.3、1.4,其中包含该重量跨度内的总鸡数)
任何帮助表示赞赏