我怎样才能使用OVER和ORDER BY

ser*_*kan 6 sql sql-server sum sql-order-by window-functions

我无法理解这段代码的错误.

码:

SELECT
    CariID, HesapID, BTrh, BCinsiID, BNo, Acklm, VdTrh, mTrh, BorcT, AlacakT, 
    SUM(BorcT) OVER (PARTITION BY CariID, HesapID ORDER BY BTrh, BNo, mTrh) AS TopBorcT, 
    SUM(AlacakT) OVER (PARTITION BY CariID, HesapID ORDER BY BTrh, BNo, mTrh ) AS TopAlacakT
FROM
    tCariH
Run Code Online (Sandbox Code Playgroud)

错误:

Msg 102,Level 15,State 1,Line 3

'order'附近的语法不正确.

JNK*_*JNK 2

对于像 这样的聚合函数SUM您不需要ORDER BYOVER子句中使用- 您只需要使用该PARTITION函数。用于ORDER排名功能:

根据与 OVER 子句一起使用的排名、聚合或分析函数,<ORDER BY clause>和/或<ROWS and RANGE clause>可能不受支持。

只需修改以删除ORDER两个聚合中的 ,就可以了。

  • 您*可以*将 ORDER BY 与 sum() 或 avg() 一起使用。然后,它将创建直到“当前行”的“运行”总和(或平均值)。除非 Oracle 和 PostgreSQL SQL Server 到目前为止还不支持这一点。仅全新的 SQL Server 2012 支持此功能 (4认同)