1

SQL Server 2008データベースには、次のような2つの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句を含むもう1つのオプション

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 に答える