Как выбрать несколько строк промежуточного итога - PullRequest
1 голос
/ 14 апреля 2020

Итого у меня есть

SELECT 
    id, 
    DepositValue, 
    action_date,
    SUM(DepositValue)  OVER(ORDER by action_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS Running_total

Приведенный выше выбор возвращает мне следующее:

id  action_date   DepositValue      Running_total
1   2020-04-01         20                20
2   2020-04-02         2                 22
3   2020-04-03         8                 30
4   2020-04-04         10                38
5   2020-04-05         14                48
6   2020-04-06         15                62
7   2020-04-07         22                77
8   2020-04-08         12                99
9   2020-04-09         4                 103

Чего я хочу добиться, так это выбора только части Running_total в зависимости от action_date с уже рассчитанными значениями, подобными этим.

id  action_date   DepositValue      Running_total
3   2020-04-03         8                 30
4   2020-04-04         10                38
5   2020-04-05         14                48

1 Ответ

0 голосов
/ 14 апреля 2020

Вы можете превратить ваш запрос в подзапрос и отфильтровать его во внешнем запросе:

SELECT *
FROM (
    SELECT 
        id, 
        DepositValue , 
        action_date, 
        SUM(DepositValue) OVER(ORDER by action_date) AS Running_total
    FROM mytable
) t
WHERE action_date BETWEEN '2020-04-03' AND '2020-04-05'

Обратите внимание, что спецификация окна ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW на самом деле используется по умолчанию, если не задана, поэтому вы можете просто удалить ее.

Кроме того, в исходном запросе отсутствовало предложение FROM, я его добавил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...