每个 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
Region
和 Year
是列,我必须遍历多个列并替换 @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;
Declare @region as nvarchar(30)
Set @region = 'Region'
select SUM([Units_Sold])
from Table1
group by @region, Year
Region
和 Year
是列,我必须遍历多个列并替换 @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;