【问题标题】:SQL Server 2008 Error: The ORDER BY clause is invalid in viewsSQL Server 2008 错误:视图中的 ORDER BY 子句无效
【发布时间】:2016-02-16 10:38:34
【问题描述】:

我收到错误消息。

ORDER BY 子句在视图、内联函数、派生中无效 表、子查询和公用表表达式,除非 TOP 或 FOR 还指定了 XML。

这是查询:

select * from
   (select * from pacesetter_forecast order by hectare DESC) t 
group by cluster

【问题讨论】:

  • 你的说法没有意义。您要解决的真正问题是什么?
  • 您也不能将 group by 与 select * 一起使用,因为您需要对除集群之外的其他列进行聚合
  • 解释你认为排序和分组应该做什么。我认为您对某些事情感到困惑。

标签: sql sql-server group-by


【解决方案1】:

错误信息是正确的。您不能对子查询的输出进行排序。如果您不确定子查询是什么:

SELECT *
FROM (SELECT * FROM SomeOtherTable) T -- This is the subquery, a query within a query

从逻辑上讲,对子查询的结果进行排序没有多大意义。通常,子查询的想法是您获取查询的结果并像使用表一样使用它(JOINing 到它,SELECTing 从它等等)。在人们查看输出之前,表中的行物理存储在磁盘上的顺序通常无关紧要。

顺便说一句,在您上面的示例中,您的子查询实际上是不必要的。您可以通过 SELECT 从您的表 pacesetter_forecast 执行您的 GROUP BYORDER BY (如果您的表具有允许 SELECT *GROUP 使用单个列名的正确架构。 . 但这是另一个 SO 问题的不同讨论)。

【讨论】:

    猜你喜欢
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    相关资源
    最近更新 更多