SQL Server 错误:“BETWEEN ... FOLLOWING AND CURRENT ROW”不是有效的窗口框架,不能与 OVER 子句一起使用。

hhh*_*hhh 4 sql-server sql-server-2014

我正在尝试将 3 个月的净值与 1 个月的净值相加。代码

SELECT [CMONTH]
      ,[ID]
      ,[NET_VALUE_1M]
      ,SUM(CAST([NET_VALUE_1M] as float)) OVER 
          (PARTITION BY [ID] ORDER BY [CMONTH] 
             ROWS BETWEEN 3 FOLLOWING AND CURRENT ROW) as 'NET_VALUE_3M'   
  FROM [Channel_AGG]
Run Code Online (Sandbox Code Playgroud)

正在引发错误

Msg 4193, Level 16, State 4, Line 2
'BETWEEN ... FOLLOWING AND CURRENT ROW' is not a valid window frame 
and cannot be used with the OVER clause.
Run Code Online (Sandbox Code Playgroud)

为什么会这样,是什么原因造成的以及如何解决?

Mar*_*ith 5

你需要使用

ROWS BETWEEN CURRENT ROW AND 3 FOLLOWING
Run Code Online (Sandbox Code Playgroud)

上限不能小于下限。