2012-10-04 548 views
4

我有这样的查询:GROUP-BY表达式必须包含至少一个列不是外部引用

SELECT 
SolutionName -- Solution_NAM 
from Table_View 
Group By 1 

其中Table_View是当然的图。 我得到这个错误信息:

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

你能帮我解决吗? It's内的MS SQL Server 2008

+1

你想做什么?您无法按SQL Server中的列顺序进行分组。您需要指定名称。 –

回答

3

你不能给组由1

尝试

SELECT 
SolutionName -- Solution_NAM 
from Table_View 
Group By SolutionName 
+0

thx,它的工作原理! – Dantes

0

马丁的约GROUP BY语句是正确的,虽然你>可以<绝对使用列序号,而不是在一个ORDER BY中,在各种版本的SQL中(我在考虑TSQL,这是大多数核心SQL语法中的ISO标准)中的列名。

但明智的做法是不要在ORDER BY语句中使用列序号,即使它们有效。为什么?如果查询是存储过程的一部分,并且通过将列添加到原始表(或视图)来更改表模式,则不能保证原始列顺序将被更改保留。这意味着你可能会被一个意想不到的毫无意义的专栏排序,然后会破坏你的申请。

这是更好的做法,每次使用列名而不是序号(虽然像count(*),但不要挂上它,如果它临时查询自己的使用,永远不会看到生产日)。

相关问题