7

我有这个查询:

SELECT
SolutionName    -- Solution_NAM
from  Table_View
Group By 1

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

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

你能帮我解决这个问题吗?它在 MS SQL Server 2008 中

4

2 回答 2

5

你不能给 Group by 1

尝试

SELECT
SolutionName    -- Solution_NAM
from  Table_View
Group By SolutionName
于 2012-10-04T07:34:48.633 回答
1

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

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

每次都使用列名而不是序数是更好的做法(尽管像 count(*),如果它是临时查询供您自己使用,在生产中永远不会看到曙光,请不要挂断它) .

于 2017-08-08T13:29:24.647 回答