我已经运行了全部
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
您可以将查询转换为子查询,并在外部查询中进行筛选:
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
子句,我添加了它。