繁体   English   中英

累积总和当行具有相同的值 sql sql server

[英]Cumulative Sum When rows have the same value sql sql server

我想这样做列小计的累计总和得到累积RunningTotal列。 但我注意到,如果行具有相同的值,则累积总和不起作用。 例如,在下面的示例中,第 5 行和第 6 行具有相同的 SubTotal 值 838.9178。 因此,RunningTotal 列不会对第 5 行和第 6 行求和。

例子

我该如何解决这个问题? 我希望得到如下结果:

预期的

请在下面找到我的查询。 提前谢谢了!

select YEAR(OrderDate) as FiscalYear,
       REPLACE(CONVERT(varchar(12), OrderDate,1), ' ', '-') as OrderDate,
       SubTotal,
       SUM (SubTotal) OVER (partition by YEAR(OrderDate) ORDER BY OrderDate,SubTotal ) AS RunningTotal
from Sales.SalesOrderHeader
where YEAR(OrderDate)=2012 or YEAR(OrderDate)=2013
order by YEAR(OrderDate),OrderDate;

您需要一个row窗口子句或一个稳定的排序。 尝试这个:

   SUM(SubTotal) OVER (partition by YEAR(OrderDate) ORDER BY OrderDate ROWS BETWEEN UNBOUNDED PRECEDING AND CURENT ROW) AS RunningTotal

或者,如果您在行上有一个唯一的 ID:

   SUM(SubTotal) OVER (partition by YEAR(OrderDate) ORDER BY OrderDate, UniqueId) AS RunningTotal

问题是默认窗口子句使用RANGE BETWEEN ,这不是您想要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM