Declare @region as nvarchar(30)
Set @region = 'Region'
select SUM([Units_Sold])
from Table1
group by @region, Year
Region
和Year
是列,我必须遍历多个列并替换@region
的值
但显示为
每个GROUP BY表达式必须至少包含一列,而不是外部引用。
我们将不胜感激
答案 0 :(得分:1)
不能使用参数替换标识符(列名,函数名等)。因此,您要插入的值将被解释为一个常量,即字符串'Region'
,而不是列引用。 SQL Server检测何时任何按组分组的键都是常量,并返回错误。
不幸的是,您需要使用动态SQL 修改查询字符串:
declare @region as nvarchar(30);
set @region = 'Region';
declare @sql nvarchar(max);
set @sql = N'
select SUM([Units_Sold])
from Table1
group by @region, Year
';
set @sql = replace(@sql, '@region', @region);
exec sp_executesql @sql;