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
クエリは、間隔でグループ化された最小と最大の重みパラメータ間の重みを返す必要があります(たとえば、.1間隔は、その重みスパン内の鳥の総数で1.1、1.2、1.3、1.4のようになります)
どんな助けでも大歓迎です