【问题标题】:Each GROUP BY expression must contain at least on每个 GROUP BY 表达式必须至少包含
【发布时间】:2018-11-28 17:06:32
【问题描述】:
Declare @region as nvarchar(30)
Set @region = 'Region'
select SUM([Units_Sold])
from Table1
group by @region, Year
Region 和 Year 是列,我必须遍历多个列并替换 @region 的值,
但它显示错误为
每个 GROUP BY 表达式必须至少包含一个不是外部引用的列。
非常感谢您的帮助
【问题讨论】:
标签:
sql
sql-server
tsql
dynamic-sql
【解决方案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;