首页 > 解决方案 > SQL sum 和上一行

问题描述

我有下表:

________________________
date        |  amount
________________________
01-01-2019  | 10
01-01-2019  | 10
01-01-2019  | 10
01-01-2019  | 10
02-01-2019  |  5
02-01-2019  |  5
02-01-2019  |  5
02-01-2019  |  5
03-01-2019  | 20
03-01-2019  | 20

这些是按日期排列的突变值。我希望我的查询按日期返回总和。所以对于 2019 年 2 月 1 日,我需要 40(4 乘以 10)+20(4 乘以 5)。对于 2019 年 3 月 1 日,我需要(4 次 10)+20(4 次 5)+40(2 次 20)等等。这可能在一个查询中吗?我如何实现这一目标?

我当前获取单个突变的查询:

Select s.date,
  Sum(s.amount) As Sum_amount
From dbo.Financieel As s
Group By s.date

标签: sqlsql-serverselectgroup-bysum

解决方案


你可以试试下面 -

演示

select dateval,
SUM(amt) OVER(ORDER BY dateval ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as amt
from
(
    SELECT 
    dateval, 
    SUM(amount) amt
FROM t2  group by dateval
)A

输出:

dateval              amt
01/01/2019 00:00:00  40
01/02/2019 00:00:00  60
01/03/2019 00:00:00  100

推荐阅读