[英]Issue with Window Function in SQL Server 2008 R2
我在以下 SQL 腳本中收到執行錯誤:
SELECT TOP 1 PERCENT
a.accode, a.voucherdate, a.credit, a.Debit,
SUM(a.Debit) OVER (ORDER BY [a.accode],[a.voucherdate]) AS rdr
FROM
VoucherMain AS a
ORDER BY
a.accode, a.voucherdate
錯誤信息
'order' 附近的語法不正確
誰能告訴我我的語法有什么問題?
問題是您需要 SQL Server 2012 及更高版本。 好的,我為未來的訪問者添加了“及以上”,但將2008 OVER CLAUSE與2012 OVER CLAUSE進行比較。
2008 版有以下重要說明:
在排名窗口函數的上下文中使用時,
<ORDER BY Clause>
只能引用由 FROM 子句提供的列。 不能指定整數來表示選擇列表中列的名稱或別名的位置。<ORDER BY Clause>
不能與聚合窗口函數一起使用。
在 SQL Server 2008 中,只能使用OVER
子句對聚合函數進行分區,不能應用命令:
排名窗口函數 < OVER_CLAUSE > :: = OVER ( [ PARTITION BY value_expression , ... [ n ] ] < ORDER BY_Clause> )
聚合窗口函數 < OVER_CLAUSE > :: = OVER ( [ PARTITION BY value_expression , ... [ n ] ] )
請注意,聚合沒有<ORDER BY Clause>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.