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

时间:2012-10-04 07:31:30

标签: sql-server sql-server-2008 tsql

我有这个问题:

SELECT
SolutionName    -- Solution_NAM
from  Table_View
Group By 1

其中Table_View当然是一个视图。 我收到此错误消息:

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

你可以帮我解决这个问题吗? 它在Ms SQL Server 2008中

2 个答案:

答案 0 :(得分:4)

你不能给1分组

SELECT
SolutionName    -- Solution_NAM
from  Table_View
Group By SolutionName

答案 1 :(得分:0)

Martin关于GROUP BY的陈述是正确的,尽管你>可以<在各种版本的SQL中,我肯定在ORDER BY中使用列序号而不是列名(我在想TSQL,它是大多数核心SQL语法中的ISO标准)。

但明智的做法是不要在ORDER BY语句中使用列序号,即使它们确实有效。为什么?如果查询是存储过程的一部分,并且通过向原始表(或视图)添加列来更改表模式,则无法保证更改将维护原始列排序。这意味着你可以通过一个无意义且无意义的列进行排序,这会破坏你的应用程序。

最好每次都使用列名而不是序数(尽管像count(*)一样,如果它是为了你自己的用途而特别查询它将永远不会看到它的亮点,不要挂断它在生产中。)