Строки между неограниченным PRECEDING и CURRENT ROW работают только на первых 15 строках? - PullRequest
0 голосов
/ 25 октября 2019

Я пытаюсь получить промежуточную сумму за счет в нашей системе. Таким образом, каждая транзакция добавляет / вычитает построчно

Я пытаюсь использовать несвязанную предыдущую функциональность в SQL 2016.

, SUM (isnull (Value, 0.00)) OVER (ORDER BY AccountNoROWS МЕЖДУ UNBOUNDED PRECEDING И CURRENT ROW) AS Total

В настоящее время это работает до строки 15, затем просто запускает промежуточный итог каждой транзакции, я пробовал различные комбинации функции Unbounded, но всегда получал один и тот же результат?

enter image description here

1 Ответ

1 голос
/ 25 октября 2019

Если вам нужна скользящая сумма для учетной записи , то вы должны использовать этот синтаксис:

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, поэтому вам не нужно указывать это явно, если вы просто хотите неограниченную скользящую сумму.

...