求和多行,但保留结果中的行数

时间:2017-08-08 03:57:02

标签: sql sql-server sql-server-2008

在我的SQL Server 2008存储过程中,我有一个包含RecordIDTotalMinutesProcessID的表变量。

Declare @tblSum table(RecordID int, TotalMinutes int, ProcessID int) 

RecordID是我的主键,总分钟是总分钟数,我有不同的流程,但这些流程会在我的数据上重复多次。

以下是我的数据示例:

  RecordID     TotalMinutes     ProcessID 
 --------------------------------------------
   1              10            1        
   2              20            1       
   3              30            1
   4              10            2       
   5              40            2
   6              10            2
   7              10            3        
   8              55            3       
   9              60            3       
   10             15            4       

我的计划是通过合计或添加具有相同ProcessID的所有数据来返回数据,并将其放在带有FinalMinutes列的新表变量上,如下表所示:

RecordID     TotalMinutes     ProcessID     FinalMinutes
 -----------------------------------------------------
   1              10            1           60
   2              20            1           60
   3              30            1           60
   4              10            2           80
   5              60            2           80
   6              10            2           80
   7              10            3           125
   8              55            3           125
   9              60            3           125
   10             15            4           15

我不能分组,因为它会将结果分成4行。我需要保留行数及其拥有的每个数据,我只需在新表变量上添加FinalMinutes列。

1 个答案:

答案 0 :(得分:2)

以下是使用SUM()Over()窗口聚合函数

的一种方法
Select *,
       FinalMinutes = sum(TotalMinutes)over(partition by ProcessID)
From yourtable