7

在执行我认为是最简单的查询之一时,我遇到了这个错误!我看到其他人在这里也遇到了问题,我查看了我见过的每一个解决方案,但他们的查询涉及更多,所以我很难找出问题所在。我做了一个小虚拟表来说明我的问题。

表名:组测试

id  name
1   Mel
2   Lucy
3   Mandy
4   Mel
5   Mandy
6   Mel

我想知道每个名字出现了多少次,以生成如下表格:

3 Mel
2 Mandy
1 Lucy

这是我认为应该有效的查询:

SELECT Count(id), Name
FROM groupbytest
GROUP BY 'Name'

我得到了错误:

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

帮助!

4

3 回答 3

7

您在 Name 字段周围有不需要的引号。

SELECT Count(id), Name
FROM grouptest
GROUP BY Name

根据您的评论,您需要在CAST您的Name专栏中:

SELECT Count(id), Cast(Name as Varchar(max)) Name
FROM grouptest
GROUP BY Cast(Name as Varchar(max))
于 2012-07-31T18:44:20.373 回答
5

失去'GROUP BY

SELECT Count(id), Name 
FROM groupbytest 
GROUP BY Name

如果name是 a text,那么您需要将其转换为VARCHAR,但您可能会截断您的列。

SELECT Count(id), CAST(Name AS VARCHAR(8000)) AS Name
FROM groupbytest 
GROUP BY CAST(Name AS VARCHAR(8000))
于 2012-07-31T18:44:04.297 回答
0

你要:

SELECT Count(id), [Name]
FROM groupbytest 
GROUP BY [Name]

GROUP BY 'Name'尝试对文字字符串 'Name' 进行分组,而不是 column Name

Name也可能是一个保留字,因此它周围的括号,虽然你最好不要调用 column Name

于 2012-07-31T18:44:00.743 回答