0

どうやってこれを見逃しているのかわかりませんが、深夜からのものだと確信しています! 加重AVGを計算するためにNorthWindを使用しているとしましょう

USE NORTHWIND
Select  OD.UnitPrice,OD.Quantity,
sum(OD.UnitPrice*OD.Quantity)/sum(OD.Quantity) OVER (PARTITION BY
OD.UnitPrice, OD.Quantity) as[ W-AVERAGE] 
 From [Order Details] OD

列 'Order Details.UnitPrice' が集計関数または GROUP BY 句のいずれにも含まれていないため、選択リストで列 'Order Details.UnitPrice' が無効であると SQL が言い続ける理由について、何が欠けていますか? Partition By を使用すると、group by を使用する必要がなくなると思いましたか?

4

1 に答える 1

4

解決済み: すべての集約で partition by を使用する必要があります。エラー メッセージは少し誤解を招きますが、PARTition by を使用するときは常に、集約関数のすべてのインスタンスで使用する必要があることを覚えておいてください。

           Select OD.UnitPrice,OD.Quantity,
           sum(OD.UnitPrice*OD.Quantity) Over (PARTITION BY OD.UnitPrice,  
           OD.Quantity)/sum(OD.Quantity) OVER (Partition By OD.Quantity) as[W-AVERAGE] 
           From [Order Details] OD
于 2012-11-27T20:12:48.203 に答える