2016-10-17 8 views
1

既に回答を検索しようとしましたが、同様の質問がありましたが、回答から答えを把握できませんでした。Colum Xが無効です - 集計関数またはグループ句ではありません

SELECT a.custid as [custid], 
     a.country as [country], 
     SUM(n.qty) over (partition by a.custid) as [total qty] 
FROM sales.Customers a, sales.orderdetails n 
where a.country = 'USA' 
GROUP BY custid, country 

私がしようとしているのは、すべての米国のお客様に返品され、各顧客の合計数量です。

これは私にエラーを与えています。それは、集計関数またはGROUP BY句に含まれていないため、メッセージ8120

、レベル16、状態1、行2
列「sales.orderdetails.qtyは、」選択リストでは無効です。

+0

適切なJOIN構文で読み上げます。実際の結合条件 - 明示的な 'JOIN'演算子を使用しているときには起こり得ない何かを忘れてしまったので、古くて古くて壊れやすい構文を使用すると、クロスプロダクトになります –

+0

ありがとう、ありがとう。 – Barny

答えて

1

スクリプトを次のように変更します。適切なJOIN条件に言及することによって、2つのテーブル間の関係を作成する必要があります。また、OVER()句を集合演算子から削除してください。

SELECT a.custid as [custid],a.country as [country], SUM(n.qty) as [total qty] 
FROM sales.Customers a 
    JOIN sales.orderdetails n 
    ON a.custid =n.custid --give appropriate join condition 
where a.country = 'USA' 
GROUP BY a.custid, country 
+0

5行目に "無効な桁の名前"を与えています(上にuseステートメントを追加したので、コードの4行目について話しています)。sales.orderdetailsにはcustidがありません。コード – Barny

+0

の問題は、Customersテーブルとorderdetailsテーブルがどのようにリンクされているかを教えてください。何らかの関係があり、中間テーブルを介している可能性がありますか? –

+0

こんにちは、申し訳ありませんが、私は言及すべきでした。そのオンラインデータベース、簡単に発見されたノースウィンドデータベース、テストデータベースです。 – Barny

関連する問題