首页 > 解决方案 > 无界前行和当前行之间的行仅适用于前 15 行?

问题描述

我正在尝试在我们的系统中获取每个帐户的滚动总数。所以每笔交易逐行加减

我正在尝试在 SQL 2016 中使用未绑定的先前功能。

, SUM(isnull(Value,0.00)) OVER(ORDER BY AccountNo ROWS BETWEEN UNBOUNDED PRECEDING 和当前行) 作为总计

目前这一直有效到第 15 行,然后它只是开始滚动总计每个事务,我尝试了 Unbounded 函数的不同组合,但总是得到相同的结果?

在此处输入图像描述

标签: sql-servertsqlsql-server-2016

解决方案


如果您想要每个帐户的滚动总和,那么您应该使用以下语法:

SELECT
    AccountNo,
    TrackingValue,
    mk,
    SUM(TrackingValue) OVER (PARTITION BY AccountNo ORDER BY mk) AS RollingSum
FROM yourTable
ORDER BY
    AccountNo,
    mk;

请注意SUM(),当用作分析函数时, 的默认窗口已经是ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW,因此如果您只需要无界滚动和,则无需明确指定。


推荐阅读