2012-11-27 83 views
0

我不知道我是如何失蹤,但我相信它是從晚上的夜晚! 任何幫助表示讚賞 假設我們使用的是羅斯文來計算加權AVG分區不通過加權AVG計算

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 

我缺少什麼,爲什麼SQL口口聲聲說列「訂單Details.UnitPrice」在選擇列表中無效,因爲它不包含在集合函數或GROUP BY子句中。我認爲使用分區通過解決必須有一個組?

回答

3

解決方案:您必須在每個聚合中使用分區,錯誤消息有點讓人誤解,但只要記住使用PArtition時必須在任何聚合函數的實例中使用!

  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