我有这个查询:
SELECT
SolutionName -- Solution_NAM
from Table_View
Group By 1
Table_View当然是风景。我收到此错误消息:
每个 GROUP BY 表达式必须至少包含一个不是外部引用的列。
你能帮我解决这个问题吗?它在 MSS SQL Server 2008<</p>
你不能给 Group by 1
尝试
SELECT
SolutionName -- Solution_NAM
from Table_View
Group By SolutionName
Martin关于GROUP BY的陈述是正确的,尽管在各种版本的SQL中,您>可以<绝对使用列序号而不是ORDER>绝对使用列序号而不是ORDER>
但是明智的做法是不在 ORDER BY 语句中使用列序号,即使它们确实有效。为什么?如果查询是存储过程的一部分,并且通过向原始表(或视图)添加列来更改表架构,则无法保证更改将保持原始列顺序。这意味着您可能按意外且无意义的列进行排序,然后中断您的应用程序。
最好每次都使用列名而不是序号(尽管像 count(*),但如果它是供你自己使用的临时查询,永远不会在生产中出现,请不要挂断它)。