在SQL中给定唯一ID和条件日期的值的总和

时间:2018-11-02 17:50:15

标签: sql sql-server

我想对值求和,但只给出唯一的ID和条件日期。例如,我希望对行日期之前的ID的所有值求和,我的表如下所示:

ID|Date     |Val| Val2         
x |1/1/2016|1|0           
y |1/1/2016|3|0  
z |1/1/2016|2|0  
x |2/1/2016|2|0  
y |2/1/2016|0|0  
z |2/1/2016|1|0  
x |3/1/2016|0|0  
y |3/1/2016|5|0   
z |3/1/2016|2|0  

我希望它看起来像:

ID|Date     |Val| Val2         
x |1/1/2016|1|1           
y |1/1/2016|3|3  
z |1/1/2016|2|2  
x |2/1/2016|2|3  
y |2/1/2016|0|3  
z |2/1/2016|1|3  
x |3/1/2016|0|3  
y |3/1/2016|5|8   
z |3/1/2016|2|5  

有什么想法吗?跨列求和很简单,并且按组对唯一ID的行求和是合乎逻辑的,但是如何使用日期和ID对行进行条件求和?

1 个答案:

答案 0 :(得分:1)

您正在寻找累计金额:

select id, date, val,
       sum(val) over (partition by id order by date) as val2
from t;