如何select几行共运行

How to select a few rows of Running total

我总共 运行

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

以上selectreturns我以下:

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

我想要实现的是 select 仅 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'

请注意 window 规范 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW 实际上是未指定时的默认值,因此您可以将其删除。

此外,您的原始查询缺少 FROM 子句,我添加了它。