簡體   English   中英

SQL Server 2008 R2 中的窗口函數問題

[英]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 CLAUSE2012 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM