3

次の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'の近くの構文が正しくありません

誰かが私の構文の何が問題になっているのか教えてもらえますか?

4

2 に答える 2

6

問題は、SQL Server 2012 以降が必要なことです。さて、将来の訪問者のために「以上」を追加しましたが、2008 OVER CLAUSE2012 OVER CLAUSE を比較してください。

2008 年版には、次の重要な注意事項があります。

ランキング ウィンドウ関数のコンテキストで使用する場合<ORDER BY Clause>、FROM 句によって使用可能になった列のみを参照できます。選択リスト内の列の名前または別名の位置を表すために整数を指定することはできません。<ORDER BY Clause>集計ウィンドウ関数では使用できません。

于 2012-10-02T07:35:19.477 に答える
3

OVERSQL Server 2008 では、句を使用して集計関数を分割することしかできず、順序を適用することはできません。

ランキング ウィンドウ関数 < OVER_CLAUSE > :: = OVER ( [ PARTITION BY value_expression , ... [ n ] ] < ORDER BY_Clause> )

集約ウィンドウ関数 < OVER_CLAUSE > :: = OVER ( [ PARTITION BY value_expression , ... [ n ] ] )

<ORDER BY Clause>集計にはないことに注意してください。

于 2012-10-02T07:35:53.843 に答える