我不知道我怎么会错过这个,但我相信这是从深夜开始的! 任何帮助赞赏 假设我们使用NorthWind来计算加权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一直在说明列'Order Details.UnitPrice'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。我以为使用分区通过解决必须有一个组?
答案 0 :(得分: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