2017-12-03 12 views
0

私はこのタスクを持っています。 "注文ごとに、注文したユニットの総数と顧客の名前を入力してください。 データベース:GROUP BY句でselectを使用する方法

SELECT a.OrderID, SUM(a.Quantity), c.CompanyName FROM [Order Details] as a 
INNER JOIN Orders as b ON b.OrderID = a.OrderID 
INNER JOIN Customers as c ON c.CustomerID = b.CustomerID 

GROUP BY a.OrderID 

しかし、私は会社名を表示することができません:Microsoft SQL Serverの12.0.2000.8 は、私がこれまでにそのコードを書きます。注文ごとに1つの会社名にする必要があり、それを連結する必要はありません。どうやってやるの? 私のデータベースダイアグラムを囲みます。 enter image description here

+0

あなたは、コードの実行時にエラーが出るのですか?特定のエラーは何ですか?ヒントとして、あなたが 'GROUP BY'を使うとき、返すカラムは' GROUP BY'か集合関数でなければなりません。 OrderByIDが必要ですか?あなたは実際に数量がほしいか、それとも何かしたいですか? –

+0

私の間違い申し訳ありません。私はSUM(a.Quantity)を書いた。すべてのOrdersIDとその数量の合計、およびそのOrderIDを持つ会社の名前を持つ行を取得したい – newman

+1

あなたのgroup by句に会社の列を追加する必要があります。 –

答えて

1

エラーは、集計されていないすべての列がGROUP BY句に存在する必要があります。

したがって、間違いは基本的にGROUP BYの紛失CompanyName列にあります。

クエリは、このように、次のようになります。

SELECT 
    a.OrderID, 
    SUM(a.Quantity) as TotalQuantity, 
    c.CompanyName 
FROM [Order Details] as a 
INNER JOIN Orders as b ON b.OrderID = a.OrderID 
INNER JOIN Customers as c ON c.CustomerID = b.CustomerID 
GROUP BY a.OrderID, c.CompanyName 

Works

関連する問題