【问题标题】: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

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

但它显示错误为

每个 GROUP BY 表达式必须至少包含一个不是外部引用的列。

非常感谢您的帮助

【问题讨论】:

  • 不,你不能那样做,你需要Dynamic SQL

标签: 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;

【讨论】:

    猜你喜欢
    • 2014-12-30
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 2012-07-29
    相关资源
    最近更新 更多