【发布时间】:2019-01-17 15:18:09
【问题描述】:
我仍在学习 SQL,并试图找出一个我无法解决的问题。所以我的问题是我正在尝试选择一个按日期排序的表(比如说费用),并且在表中我有一个名为 Charged 的列,我想将费用添加为累积的(这部分我想通了)。但是,在那之后,我有另一列将充当名为 PayOut 的标志。当 PayOut 值为 1 时,我希望 Charged(SumValue) 的总和重置为零。我该怎么做?这是我尝试过的,我得到的当前输出和我想要的输出。注意:我看到一些使用 CTE 的帖子,但不是相同的场景并且更复杂。
select ex.date,
ex.Charged,
(case when(ex.PayOut=1) then 0
else sum(ex.Charged) over (order by ex.date)end) as SumValue,
ex.PayOut
from Expense ex
order by ex.date asc
数据是这样的
Date Charged PayOut
01/10/2018 10 0
01/20/2018 5 0
01/30/2018 3 0
02/01/2018 0 1
02/11/2018 12 0
02/21/2018 15 0
我得到的输出
Date Charged PayOut SumValue
01/10/2018 10 0 10
01/20/2018 5 0 15
01/30/2018 3 0 18
02/01/2018 0 1 0
02/11/2018 12 0 30
02/21/2018 15 0 45
想要的输出
Date Charged PayOut SumValue
01/10/2018 10 0 10
01/20/2018 5 0 15
01/30/2018 3 0 18
02/01/2018 0 1 0
02/11/2018 12 0 12
02/21/2018 15 0 27
【问题讨论】:
标签: sql sql-server