2013-01-23 71 views
1

最大總我有一個SQL Server 2008數據庫看起來像下面兩個SQL表:尋找具有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查詢?

謝謝

回答

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 
0

或者,你可以這樣做:

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

與OVER子句

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

演示上SQLFiddle還有一個選項