如何在over函数中使用分区和顺序?

use*_*682 5 sql sql-server-2008

我正在使用SQL Server 2008 R2.

我正在尝试编写一个显示以下内容的查询:

select productname, unitprice,categoryid, sum(unitprice) 
over (partition by categoryid order by unitprice desc) As PriceSum
from Products
Run Code Online (Sandbox Code Playgroud)

我希望结果按单价订购产品,同时按产品类别划分产品.我收到了这个错误:Incorrect syntax near 'order'. 我做错了什么?

a_h*_*ame 9

你什么都不做错.SQL Server 2008不支持使用窗口函数运行聚合.

SQL Server 2012最终完全支持窗口函数,包括运行聚合.所以如果你真的需要这个,你需要升级.

请参阅SQL Server 2012的SQLFiddle:http://sqlfiddle.com/#!6/5303f/1