每个 GROUP BY 表达式必须至少包含

Each GROUP BY expression must contain at least on

Declare @region as nvarchar(30)

Set @region = 'Region'

select SUM([Units_Sold]) 
from Table1 
group by @region, Year

RegionYear 是列,我必须遍历多个列并替换 @region

的值

但显示错误

Each GROUP BY expression must contain at least one column that is not an outer reference.

非常感谢您的帮助

不能用参数替换标识符(列名、函数名等)。因此,您插入的值被解释为常量,即字符串 'Region',而不是列引用。 SQL 服务器检测到任何按键分组何时为常量并且 returns 出错。

不幸的是,您需要使用动态 SQL munge 查询字符串:

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;