1

我在 SQL Server 2008 数据库中有两个 SQL 表,如下所示:

Customer
--------
ID
Name

Order
-----
ID
CustomerID
Total

我需要弄清楚客户下的最多订单数量。在这一点上,我已经到了这里:

SELECT MAX([OrderCount]) FROM (
  SELECT COUNT(o.[ID]) as 'OrderCount'
  FROM [Order] o 
  GROUP BY o.[CustomerID]
)

当我执行此语句时,我收到一条消息,提示“')' 附近的语法不正确”。我的子查询有效。这意味着问题出在 SELECT MAX([OrderCount]) 上,但对我来说一切看起来都是正确的(当然,我不是 sql 高手)。我在这里做错了什么?我是否正确地攻击了这个 sql 查询?

谢谢

4

3 回答 3

3

你基本上在那里:

SELECT MAX([OrderCount]) FROM (
  SELECT COUNT(o.[ID]) as 'OrderCount'
  FROM [Order] o 
  GROUP BY o.[CustomerID]
) t

最后需要别名。

没有子查询的另一种编写方法是:

  SELECT top 1 COUNT(o.[ID]) as OrderCount
  FROM [Order] o 
  GROUP BY o.[CustomerID]
  order by OrderCount desc
于 2013-01-23T14:19:53.443 回答
0

OVER 子句的另一种选择

SELECT TOP 1 MAX(COUNT(o.[ID])) OVER() AS OrderCount
FROM [Order] o
GROUP BY o.[CustomerID]

SQLFiddle上的演示

于 2013-01-23T16:12:45.080 回答
0

或者你可以这样做:

SELECT max(COUNT(o.[ID])) as 'OrderCount'
FROM [Order] o  
GROUP BY o.[CustomerID]
于 2013-01-23T14:24:44.553 回答